Excess Mortality And Vaccines In Europe (v2)¶

Author: Justin Garza

Date: See below

Description:
This notebook explores excess mortality across Europe, analyzing statistical trends and investigating potential causes through data visualization and interpretation.

Content Warning:
If you find discussions of death or its underlying factors distressing, please proceed with caution or consider whether this content is right for you.

In [1]:
from datetime import datetime
from IPython.display import display
from IPython.display import Markdown as MD
current_date = datetime.now().strftime('%Y-%m-%d')
version = datetime.now().strftime('%Y%m%d.%H%M')
display(MD(f"**Date:** {current_date}"))
display(MD(f"**version:** {version}"))

Date: 2025-03-27

version: 20250327.0652

Table of Contents¶

In [2]:
import os
import json5 as json
from IPython.display import display, HTML
from IPython.display import Markdown as MD

nb_path = os.path.join(os.getcwd(),'main.ipynb')

# Read the notebook
with open(nb_path, 'r', encoding='utf-8') as f:
    nb_data = json.load(f)

# Extract headers from markdown cells
outline = []
for cell in nb_data.get("cells", []):
    if cell["cell_type"] == "markdown":
        for line in cell["source"]:
            if line.startswith("#"):  # Markdown header
                level = line.count("#")  # Determine header level
                title = line.lstrip("#").strip()
                outline.append({
                        'text':title,
                        'level':level-1,
                        'link': f"index.html#{title.replace(' ','-')}"
                        })

for i in outline:
    display(HTML(f'<a href=\'{i["link"]}\'>{"#" * i["level"]} {i["text"]}</a>'))
    # print(f'<a href=\'{i["link"]}\'>{"#" * i["level"]}{i["text"]}</a>')
Excess Mortality And Vaccines In Europe (v2)
# Table of Contents
# Prerequisites
## Scientific Method
## Logical Fallacies
### About Appeal to Authority
#### And More ...
### About Post Hoc Ergo Propter Hoc (Correlation vs Causation)
# Observation
## News Articles & Headlines
### Ad Hominem Attacks
### Appeals to Authority
### Appeal to Emotions
## Denial of Aid
# Hypothesis
# Diving into the data.
# Setup
# Helping Functions
# Import and Clean Data
## death data
### Getting the Data
### variables
## cause of death
### Getting the Data
### variables
## vaccine data
### Getting the Data
### variables
# combine all data
## variables
# Lets Visualize the Data
## Line Charts - normalized deaths
## HeatMaps of deaths by AgeGroups
### Post HeatMaps Notes
## Spearman and Kendall
## Other death x vaccine charts
## Bad-Batch Theory
### There seems to be to be an unusual grouping/cluster
### Bad-Batch Theory (by Dr Vibeke Manniche)
### my 2 cents
# Lets look at some of the Causes of Death
## Hypothesizing Adverse Reactions from an mRNA Vaccine
### Spearman and Kendall ... (again)
# Let's see the Spearman's Rank over time
# lets see these overtime
# notable CODs x Vaccines
## Post Axis Notes:
## here is the Scatter Chart of Malignant neoplasms (C00-C97) x Vaccine
sidelinks
sidelinks {
sidelinks a {
sidelinks a:hover {
# Style

Prerequisites¶

Scientific Method¶

The scientific method is a systematic approach to investigating natural phenomena, acquiring knowledge, and testing hypotheses. It consists of the following key steps:

  1. Observation

    • Identify a problem or phenomenon that needs explanation.
    • Gather initial data through direct observation or research.
  2. Hypothesis

    • Propose a testable and falsifiable explanation (a hypothesis).
    • Example: "If plants receive more sunlight, then they will grow taller."
  3. Experimentation

    • Design and conduct controlled experiments to test the hypothesis.
    • Include independent and dependent variables, control groups, and repeatable procedures.
  4. Conclusion

    • Determine whether the data supports or refutes the hypothesis.
    • Modify or refine the hypothesis if necessary.
  5. Replication

    • Repeat experiments to verify results.
    • Publish findings for scrutiny by the scientific community.

    Rant!: Peer Review is Flawed

    Imagine a mechanic repairs my car and then writes a paper about it.
    Other mechanics review and approve the paper.
    But when I get my car back, it still won’t start.
    The mechanic insists, "But my paper was peer-reviewed!"
    No matter how many experts approved the paper, what really matters is whether the experiment—getting the car to run—actually worked.

The scientific method ensures objectivity, reliability, and accuracy in scientific inquiry. It is an iterative process, meaning that conclusions can lead to new questions and further investigations.

Logical Fallacies¶

Logical fallacies are errors in reasoning that weaken arguments. They can be categorized into formal (structural errors) and informal (content errors).

Type Fallacy Description
Formal Affirming the Consequent Assuming that if P → Q and Q is true, then P must be true.
Denying the Antecedent Assuming that if P → Q and P is false, then Q must be false.
Non-Sequitur The conclusion does not logically follow from the premises.
Informal – Relevance Ad Hominem Attacking the person instead of the argument.
Straw Man Misrepresenting an argument to make it easier to attack.
Red Herring Diverting attention with an irrelevant point.
Appeal to Authority Claiming something is true because an authority said so.
Appeal to Emotion Using emotions instead of logic to argue a point.
Informal – Causation & Presumption Post Hoc Ergo Propter Hoc Assuming that correlation implies causation.
Slippery Slope Claiming one action will lead to extreme consequences.
False Dilemma Presenting only two options when more exist.
Begging the Question Using circular reasoning.
False Equivalence Treating two things as equal when they are not.
Hasty Generalization Drawing a conclusion from insufficient evidence.
No True Scotsman Excluding counterexamples by redefining a group.

Logical fallacies can make arguments misleading or invalid. Identifying them helps improve critical thinking and debate skills.

About Appeal to Authority¶

DOCTORS USED TO PRESCRIBE CIGARETTES

No description has been provided for this image
No description has been provided for this image

And More ...¶
  • Bloodletting
  • Lobotomies
  • Radium and Mercury Treatments
  • Thalidomide for Morning Sickness
  • Cocaine and Heroin as Medicine
  • X-Ray Shoe Fitting
  • Forceps and Twilight Sleep in Childbirth
  • Tapeworm Diet Pills
  • Electroshock Therapy (Overuse)

Therefore Doctors need to provide something more than just saying they are an authority on a subject.

About Post Hoc Ergo Propter Hoc (Correlation vs Causation)¶

  • Flipping a switch and seeing the light turn on implies causation, not just correlation.

    • Suggesting mere correlation in this case would seem absurd.
    • without repetedly flipping the switch to test it ... we would still stay causation because:
      1. Mechanistic Understanding
        • We know how light switches work; they complete a circuit to turn the light on.
      2. Temporal Order
        • The switch is flipped first, and the light turns on immediately after, fitting the cause-effect pattern.
      3. Location Relevance
        • in this example, we are assuming the light came on in the same house where the light switch was (not a different building across town)
      4. Alternative Explanations
        • A purely correlational event would imply something external
          • (e.g., a power surge or someone else activating the light), which is far less probable.
  • Later on we will talk about vaccines, and if they work ideally they should have an impact on deaths within a country.

    1. Mechanistic Understanding
      • we all know that vaccines save lives and are safe
        • from constantly being told that in schools and the medical system
    2. Temporal Order
      • vaccines doses are given out, then there should be less people dying.
    3. Location Relevance
      • we should see the location relevance (european countries) that took more vaccines vs less vaccines.
        • unforetunatly, we don't have perfect data so that a country that took zero vaccines did not exists within the dataset.
    4. Alternative Explanations
      • Plausible alternative explanations may exist, but they require evidence to support them.
        • Suggesting an alternative without supporting evidence is a red herring, distracting from the most logical conclusion.
      • Plausible alternatives should also be relavent to the scale we are refering to.
        • As a rule of thumb a small cause - small event, big cause - big event.

Observation¶

There were two sides when it comes to the vaccines

  • The covid-19 vaccines were bad, and cause side effects (including death)
  • The covid-19 vaccines were good and saved lives, and is safe.

News Articles & Headlines¶

The One side of this can easily be seen in the news headlines, using logical fallacies

Ad Hominem Attacks¶

  • CDC Warns of 'Pandemic of the Unvaccinated'
  • Covid: French uproar as Macron vows to 'piss off' unvaccinated
  • Don Lemon Unloads on Unvaxxed: We Have to ‘Do Things For The Greater Good Of Society, Not For Idiots’
  • People Who Skip Vaccinations 'Incredibly Selfish' Experts Say
  • "If you're willing to walk among us unvaccinated, you are an enemy." - Gene Simmons, co-lead singer and co-founder of KISS
  • plague rats
  • selfish
  • anti-science
  • ignorant
  • irresponsible.

Appeals to Authority¶

  • Pope Francis urges people to get vaccinated against Covid-19
  • Former Presidents Obama, Bush and Clinton volunteer to get coronavirus vaccine publicly to prove it’s safe
  • FDA Approves First COVID-19 Vaccine

Appeal to Emotions¶

  • Getting Vaccinated to Help Protect Yourself, Your Family and Your Community
  • COVID-19 Vaccines Protect the Family, Too
  • Concern about loved ones might motivate people to mask up, get vaccine

Denial of Aid¶

One side of this topic also had the power to denie aid and services.

  • D.J. Ferguson
    • Service Denied: Heart transplant at Brigham and Women’s Hospital (2022).
    • Reason: Refused COVID-19 vaccine, a hospital requirement.
  • Leilani Lutali
    • Service Denied: Kidney transplant at UCHealth (2021).
    • Reason: Opposed vaccine due to religious beliefs; hospital mandated it.
  • Adaline Deal
    • Service Denied: Heart transplant list at Cincinnati Children’s Hospital (2025).
    • Reason: Parents refused COVID-19 and flu vaccines on religious grounds.
  • Jennifer Bridges
    • Service Denied: Employment at Houston Methodist Hospital (2021).
    • Reason: Refused vaccine mandate; fired.
  • Northwell Health Employees (1,400 individuals)
    • Service Denied: Employment (2021).
    • Reason: Refused vaccine mandate at New York healthcare provider.
  • General Cases of Unemployment Benefit Denials
    • Service Denied: Unemployment benefits (2021-2025).
    • Reason: Fired or quit over vaccine mandates; often deemed “misconduct.”

Hypothesis¶

Given the time elapsed since the COVID-19 pandemic, can we assess the long-term effectiveness of COVID-19 vaccines through available data ?

Note: This might not be a binary result (even though there are pretty binary sides),

Value Effect Description/Correlation-Suggestion
1.0 Positive effect The vaccine could have a possitive effect in saving lives and getting society back to normal.
0.5 Slightly positive effect The Vaccine could have a slightly positive effect
0.0 Null/No effect The Vaccine could have a null/no effect
-0.5 Slightly negative effect The Vaccine could have a slightly negative effect
-1.0 Negative effect The Vaccine could have a negative effect

... and of course we might dissagree on the results, and/or further research might need to be done.

Diving into the data.¶

below we will be

  1. Experimentation obtaining data, and producing some charts/graphs.
    • this can't be a real experiment with a control group, since we are limited to the data,but i hope there is enough data to come to some conclusion.
  2. Conclusion drawing the best conclusion we can from the data
  3. Replication challening you (the audience) to do approve or disprove the conclusion with your own data science approach.

Setup¶

In this section, we prepare the notebook by importing necessary libraries, configuring settings, and setting up directories for data and outputs. The setup ensures the environment is ready for data analysis and visualization.

In [3]:
# this code to will import all the things i need for this notebook

import os
import re
import math

import numpy as np
import pandas as pd

# for the notebook rendering 
from IPython.display import display, HTML
from IPython.display import Markdown as MD


# Graphs and Charts
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
import seaborn as sns
import plotly.express as px
import plotly.graph_objects as go
# use to export plotly graphs
import plotly.io as pio 

#misc
from scipy.stats import spearmanr, kendalltau
import pycountry

# pandas Settings/Options
pd.set_option("display.max_rows", None) 
pd.set_option("display.max_columns", None)
pd.set_option('display.width', 9000)
pd.set_option('max_colwidth', 400)
pd.set_option('display.float_format', '{:.3f}'.format)

# colormap 
heatmapCM = sns.color_palette('Spectral_r', as_cmap=True)
heatmapCM1 = sns.color_palette('Spectral_r', as_cmap=True)
heatmapCM2 = sns.color_palette('coolwarm', as_cmap=True)
heatmapCM3 = sns.color_palette('viridis_r', as_cmap=True)
heatmapCM4 = sns.color_palette('coolwarm_r', as_cmap=True)

## directories 
DIR = os.getcwd()
print(f'{DIR=}')

DataDIR = os.path.join(DIR,'data')
OutDIR = os.path.join(DIR,'docs')

if not os.path.exists(DataDIR):
    print('***DATA FOLDER IS MISSING***')

if not os.path.exists(OutDIR):
    os.makedirs(OutDIR)
DIR='C:\\Users\\JGarza\\GitHub\\Excess_Mortality_And_Vaccines_In_Europe'

Helping Functions¶

This section defines utility functions that streamline repetitive tasks and improve code readability. These functions will be used throughout the notebook to simplify operations, enhance modularity, and reduce redundancy.

In [4]:
def df_column_uniquify(df):
    '''
    renames columns that are the same
    '''
    df_columns = df.columns
    new_columns = []
    for item in df_columns:
        counter = 0
        newitem = item
        while newitem in new_columns:
            counter += 1
            newitem = "{}_{}".format(item, counter)
        new_columns.append(newitem)
    df.columns = new_columns
    return df
In [5]:
def abbr_to_isoalpha3(abbr):
    """
    Convert a European country ISO Alpha-2 code to ISO Alpha-3 code.

    Parameters:
        abbreviation (str): ISO Alpha-2 country code (e.g., 'DE' for Germany).

    Returns:
        str: ISO Alpha-3 country code (e.g., 'DEU'), or None if not found.
    """
    try:
        country = pycountry.countries.get(alpha_2=abbr.upper())
        if country:
            return country.alpha_3
        else:
            return None
    except KeyError:
        return None
In [6]:
# this if for converting between the abbreviation andand the names of the countries

country_dict = {
    "BE": "Belgium",
    "BG": "Bulgaria",
    "CZ": "Czechia",
    "DK": "Denmark",
    "DE": "Germany",
    "EE": "Estonia",
    "IE": "Ireland",
    "EL": "Greece",
    "ES": "Spain",
    "FR": "France",
    "HR": "Croatia",
    "IT": "Italy",
    "CY": "Cyprus",
    "LV": "Latvia",
    "LT": "Lithuania",
    "LU": "Luxembourg",
    "HU": "Hungary",
    "MT": "Malta",
    "NL": "Netherlands",
    "AT": "Austria",
    "PL": "Poland",
    "PT": "Portugal",
    "RO": "Romania",
    "SI": "Slovenia",
    "SK": "Slovakia",
    "FI": "Finland",
    "SE": "Sweden",
    "IS": "Iceland",
    "LI": "Liechtenstein",
    "NO": "Norway",
    "CH": "Switzerland",
    "UK": "United Kingdom",
    "ME": "Montenegro",
    "GE": "Georgia",
    "AL": "Albania",
    "RS": "Serbia",
    "AD": "Andorra",
    "AM": "Armenia"
}

def abbr_to_name(abbreviation):
    return country_dict.get(abbreviation.upper(), "Abbreviation not found")

def name_to_abbr(name):
    reverse_dict = {v: k for k, v in country_dict.items()}
    return reverse_dict.get(name, "Unknown")

# testing
print( abbr_to_name("BE") )  # Output: 'Belgium'
print( name_to_abbr("Belgium") )  # Output: 'BE'
Belgium
BE
In [7]:
def bar(num,denom=100.0,length=25,fillchar='#',emptychar='_'):
    fillnum = ((int)( (num/denom) * length))
    return '[' + ( fillnum * fillchar ).ljust(length,emptychar)  + ']' # + f" {(num/denom)*100.0:.2f}%     " 

print(bar(5,50))
print(bar(25,50))
print(bar(40,50))
print(bar(50,50))
[##_______________________]
[############_____________]
[####################_____]
[#########################]

Import and Clean Data¶

death data¶

Getting the Data¶

  1. go to Europa.eu - Database
  2. choose
    • Population and social conditions
    • Demography, population stock and balance
    • Deaths by week – special data collection
    • Deaths by week, sex and 20-year age group
  3. Click the little table 󰓫
  4. customize the data
    • Customize your dataset -> Time -> From - to
      • From: 2015-W01
      • To: [Current or Max]
    • Move the Age Class under Geopolitical entity (reporting)
  5. Click download (as a spreadsheet) and place the file in the .\data folder

No description has been provided for this image
No description has been provided for this image

variables¶

  • dd = death data (by year and week)
  • ddy = death data (by year)
  • ddn = normalized deaths (by year)
In [8]:
# getting the data 
dd = pd.read_excel(os.path.join(DataDIR,"demo_r_mwk_20__custom_15613355_page_spreadsheet.xlsx"),sheet_name = "Sheet 1")

# remove the headers
dd = dd.iloc[7::]

# drop the bad columns
for c in dd.columns:
    if pd.isnull(dd.at[7,c]):
        dd = dd.drop(columns=[c])

# rename time columns
for c in dd.columns:
    name = dd.at[7,c]
    dd = dd.rename(columns={c: name})

# make the duplicate column names unique
dd = df_column_uniquify(dd)

# # rename the first two columns
dd = dd.rename(columns={'TIME': 'abbr'})
dd = dd.rename(columns={'TIME_1':'name'})
dd = dd.rename(columns={'TIME_2':'agegrp'})
dd = dd.rename(columns={'TIME_3':'agegrp_desc'})
           
# drop, replace, reset index,
dd = dd.drop([7,8,9])
dd = dd.replace(to_replace=':', value=None)
dd = dd.reset_index(drop=True)

# display(dd.head(3))
display(dd.tail(10))
C:\Users\JGarza\pythons\Python312\Lib\site-packages\openpyxl\styles\stylesheet.py:237: UserWarning: Workbook contains no default style, apply openpyxl's default
  warn("Workbook contains no default style, apply openpyxl's default")
abbr name agegrp agegrp_desc 2015-W01 2015-W02 2015-W03 2015-W04 2015-W05 2015-W06 2015-W07 2015-W08 2015-W09 2015-W10 2015-W11 2015-W12 2015-W13 2015-W14 2015-W15 2015-W16 2015-W17 2015-W18 2015-W19 2015-W20 2015-W21 2015-W22 2015-W23 2015-W24 2015-W25 2015-W26 2015-W27 2015-W28 2015-W29 2015-W30 2015-W31 2015-W32 2015-W33 2015-W34 2015-W35 2015-W36 2015-W37 2015-W38 2015-W39 2015-W40 2015-W41 2015-W42 2015-W43 2015-W44 2015-W45 2015-W46 2015-W47 2015-W48 2015-W49 2015-W50 2015-W51 2015-W52 2015-W53 2016-W01 2016-W02 2016-W03 2016-W04 2016-W05 2016-W06 2016-W07 2016-W08 2016-W09 2016-W10 2016-W11 2016-W12 2016-W13 2016-W14 2016-W15 2016-W16 2016-W17 2016-W18 2016-W19 2016-W20 2016-W21 2016-W22 2016-W23 2016-W24 2016-W25 2016-W26 2016-W27 2016-W28 2016-W29 2016-W30 2016-W31 2016-W32 2016-W33 2016-W34 2016-W35 2016-W36 2016-W37 2016-W38 2016-W39 2016-W40 2016-W41 2016-W42 2016-W43 2016-W44 2016-W45 2016-W46 2016-W47 2016-W48 2016-W49 2016-W50 2016-W51 2016-W52 2017-W01 2017-W02 2017-W03 2017-W04 2017-W05 2017-W06 2017-W07 2017-W08 2017-W09 2017-W10 2017-W11 2017-W12 2017-W13 2017-W14 2017-W15 2017-W16 2017-W17 2017-W18 2017-W19 2017-W20 2017-W21 2017-W22 2017-W23 2017-W24 2017-W25 2017-W26 2017-W27 2017-W28 2017-W29 2017-W30 2017-W31 2017-W32 2017-W33 2017-W34 2017-W35 2017-W36 2017-W37 2017-W38 2017-W39 2017-W40 2017-W41 2017-W42 2017-W43 2017-W44 2017-W45 2017-W46 2017-W47 2017-W48 2017-W49 2017-W50 2017-W51 2017-W52 2018-W01 2018-W02 2018-W03 2018-W04 2018-W05 2018-W06 2018-W07 2018-W08 2018-W09 2018-W10 2018-W11 2018-W12 2018-W13 2018-W14 2018-W15 2018-W16 2018-W17 2018-W18 2018-W19 2018-W20 2018-W21 2018-W22 2018-W23 2018-W24 2018-W25 2018-W26 2018-W27 2018-W28 2018-W29 2018-W30 2018-W31 2018-W32 2018-W33 2018-W34 2018-W35 2018-W36 2018-W37 2018-W38 2018-W39 2018-W40 2018-W41 2018-W42 2018-W43 2018-W44 2018-W45 2018-W46 2018-W47 2018-W48 2018-W49 2018-W50 2018-W51 2018-W52 2019-W01 2019-W02 2019-W03 2019-W04 2019-W05 2019-W06 2019-W07 2019-W08 2019-W09 2019-W10 2019-W11 2019-W12 2019-W13 2019-W14 2019-W15 2019-W16 2019-W17 2019-W18 2019-W19 2019-W20 2019-W21 2019-W22 2019-W23 2019-W24 2019-W25 2019-W26 2019-W27 2019-W28 2019-W29 2019-W30 2019-W31 2019-W32 2019-W33 2019-W34 2019-W35 2019-W36 2019-W37 2019-W38 2019-W39 2019-W40 2019-W41 2019-W42 2019-W43 2019-W44 2019-W45 2019-W46 2019-W47 2019-W48 2019-W49 2019-W50 2019-W51 2019-W52 2020-W01 2020-W02 2020-W03 2020-W04 2020-W05 2020-W06 2020-W07 2020-W08 2020-W09 2020-W10 2020-W11 2020-W12 2020-W13 2020-W14 2020-W15 2020-W16 2020-W17 2020-W18 2020-W19 2020-W20 2020-W21 2020-W22 2020-W23 2020-W24 2020-W25 2020-W26 2020-W27 2020-W28 2020-W29 2020-W30 2020-W31 2020-W32 2020-W33 2020-W34 2020-W35 2020-W36 2020-W37 2020-W38 2020-W39 2020-W40 2020-W41 2020-W42 2020-W43 2020-W44 2020-W45 2020-W46 2020-W47 2020-W48 2020-W49 2020-W50 2020-W51 2020-W52 2020-W53 2021-W01 2021-W02 2021-W03 2021-W04 2021-W05 2021-W06 2021-W07 2021-W08 2021-W09 2021-W10 2021-W11 2021-W12 2021-W13 2021-W14 2021-W15 2021-W16 2021-W17 2021-W18 2021-W19 2021-W20 2021-W21 2021-W22 2021-W23 2021-W24 2021-W25 2021-W26 2021-W27 2021-W28 2021-W29 2021-W30 2021-W31 2021-W32 2021-W33 2021-W34 2021-W35 2021-W36 2021-W37 2021-W38 2021-W39 2021-W40 2021-W41 2021-W42 2021-W43 2021-W44 2021-W45 2021-W46 2021-W47 2021-W48 2021-W49 2021-W50 2021-W51 2021-W52 2022-W01 2022-W02 2022-W03 2022-W04 2022-W05 2022-W06 2022-W07 2022-W08 2022-W09 2022-W10 2022-W11 2022-W12 2022-W13 2022-W14 2022-W15 2022-W16 2022-W17 2022-W18 2022-W19 2022-W20 2022-W21 2022-W22 2022-W23 2022-W24 2022-W25 2022-W26 2022-W27 2022-W28 2022-W29 2022-W30 2022-W31 2022-W32 2022-W33 2022-W34 2022-W35 2022-W36 2022-W37 2022-W38 2022-W39 2022-W40 2022-W41 2022-W42 2022-W43 2022-W44 2022-W45 2022-W46 2022-W47 2022-W48 2022-W49 2022-W50 2022-W51 2022-W52 2023-W01 2023-W02 2023-W03 2023-W04 2023-W05 2023-W06 2023-W07 2023-W08 2023-W09 2023-W10 2023-W11 2023-W12 2023-W13 2023-W14 2023-W15 2023-W16 2023-W17 2023-W18 2023-W19 2023-W20 2023-W21 2023-W22 2023-W23 2023-W24 2023-W25 2023-W26 2023-W27 2023-W28 2023-W29 2023-W30 2023-W31 2023-W32 2023-W33 2023-W34 2023-W35 2023-W36 2023-W37 2023-W38 2023-W39 2023-W40 2023-W41 2023-W42 2023-W43 2023-W44 2023-W45 2023-W46 2023-W47 2023-W48 2023-W49 2023-W50 2023-W51 2023-W52 2024-W01 2024-W02 2024-W03 2024-W04 2024-W05 2024-W06 2024-W07 2024-W08 2024-W09 2024-W10 2024-W11 2024-W12 2024-W13 2024-W14 2024-W15 2024-W16 2024-W17 2024-W18 2024-W19 2024-W20 2024-W21 2024-W22 2024-W23 2024-W24 2024-W25 2024-W26 2024-W27 2024-W28 2024-W29 2024-W30 2024-W31 2024-W32 2024-W33 2024-W34 2024-W35 2024-W36 2024-W37 2024-W38 2024-W39 2024-W40 2024-W41 2024-W42 2024-W43 2024-W44 2024-W45 2024-W46 2024-W47 2024-W48 2024-W49 2024-W50 2024-W51 2024-W52 2025-W01 2025-W02 2025-W03 2025-W04 2025-W05 2025-W06
228 AM Armenia Y_LT20 Less than 20 years 10 1 18 5 15 21 11 8 9 14 11 7 11 13 5 8 9 13 14 13 10 8 13 11 13 10 17 17 12 4 12 13 15 14 11 16 19 16 11 7 13 6 9 6 17 9 10 14 9 8 14 14 11 6 12 12 12 14 17 12 9 10 6 9 11 13 20 26 22 7 10 12 13 15 13 19 11 8 11 10 16 15 17 8 7 13 6 8 13 13 8 8 10 8 7 15 18 8 13 20 10 17 9 8 10 0 18 12 10 9 7 12 10 10 5 11 7 12 11 12 9 10 13 11 14 5 5 6 12 12 13 11 10 11 7 12 4 12 11 11 11 13 11 14 11 10 7 11 9 2 12 7 15 9 4 8 8 1 11 5 7 12 8 13 11 11 3 13 8 8 11 8 14 11 3 7 16 8 8 11 12 3 10 9 13 17 2 4 8 9 5 7 11 14 10 12 8 3 8 11 10 6 13 4 9 5 5 11 6 0 7 4 8 8 14 3 7 17 10 12 5 5 6 6 3 8 7 7 8 8 9 11 7 9 9 4 13 7 10 6 16 8 9 9 7 4 7 7 9 8 9 7 7 5 7 8 9 6 9 6 6 1 7 9 7 12 11 12 14 10 10 5 11 6 10 6 6 10 12 14 16 8 7 13 6 10 6 8 8 6 11 9 9 6 3 8 10 8 5 4 10 13 20 121 101 124 85 87 86 72 32 30 32 20 28 52 54 51 38 41 33 29 12 7 9 8 7 18 17 11 16 13 11 8 11 16 7 9 12 12 15 17 9 18 12 7 6 14 22 11 11 6 10 5 10 11 6 24 10 4 14 11 18 6 6 8 10 8 11 8 6 8 12 8 15 8 9 6 8 8 12 5 6 5 9 6 10 12 13 7 9 7 6 5 9 8 9 8 6 7 13 3 16 23 19 31 31 14 18 16 7 14 9 14 10 14 8 11 2 9 10 10 11 6 9 8 11 7 14 6 13 15 11 7 9 5 2 10 18 9 7 11 12 7 4 5 9 10 8 6 12 11 8 14 7 17 10 8 3 4 13 8 3 8 9 7 12 6 14 6 7 11 8 4 2 6 7 6 9 5 10 7 6 None None None None 7 6 4 5 7 4 7 10 8 8 9 7 6 10 9 4 7 4 8 6 6 7 4 12 8 11 1 3 11 9 7 8 6 7 10 None None None None None None
229 AM Armenia Y20-39 From 20 to 39 years 3 3 28 12 18 13 13 18 12 20 15 13 18 14 9 13 15 20 7 11 17 11 14 16 22 8 12 22 20 14 15 17 20 12 22 15 14 12 11 20 17 11 12 9 16 18 15 22 8 22 11 19 9 4 24 17 13 17 20 17 10 6 8 12 17 19 23 26 18 13 10 9 18 15 13 15 12 15 12 17 8 14 15 12 21 10 9 9 19 12 14 13 15 11 18 12 18 25 7 15 14 20 18 11 9 4 22 16 17 13 12 14 16 13 11 16 14 8 9 15 11 11 16 15 15 9 12 18 14 14 14 11 10 11 15 16 12 22 14 13 13 10 4 12 8 7 12 10 11 11 15 13 11 27 7 8 9 1 21 17 12 11 13 10 6 16 3 16 13 19 12 15 16 15 17 13 12 12 10 16 15 12 12 10 12 19 9 10 24 8 20 17 14 14 9 13 16 5 15 17 17 8 14 15 13 16 22 10 16 0 4 10 6 16 7 9 14 16 12 7 14 13 10 13 15 8 11 16 15 11 20 9 4 11 18 10 9 17 9 17 13 5 14 13 14 13 13 11 9 16 11 11 9 11 17 12 10 10 15 11 11 7 12 9 15 15 19 13 10 7 13 16 6 8 7 12 17 6 8 13 14 9 5 15 19 15 15 11 9 17 15 12 16 11 11 17 20 13 17 6 18 23 38 248 233 187 128 150 94 76 42 44 42 35 35 78 58 47 48 51 35 34 21 10 10 20 19 22 26 33 16 24 11 11 13 21 9 13 14 17 16 14 23 21 18 14 19 14 18 20 14 14 13 11 19 16 15 20 21 22 23 12 16 15 16 5 7 17 13 7 10 13 12 10 14 18 9 8 6 11 19 9 9 17 9 17 12 15 10 11 12 13 15 16 11 15 8 13 17 10 20 13 14 30 28 28 28 22 18 15 7 22 13 28 15 17 10 8 9 9 19 23 10 16 18 11 13 11 11 8 16 13 15 14 15 7 8 14 12 7 11 13 15 11 13 8 10 7 8 12 20 19 20 12 9 12 19 12 11 12 11 7 11 13 10 7 10 17 8 11 4 18 16 14 14 13 15 11 14 13 12 16 18 None None None None 20 11 7 10 12 8 7 10 15 20 12 11 10 10 20 7 8 14 12 22 11 9 7 16 15 13 12 11 13 9 16 5 10 16 14 None None None None None None
230 AM Armenia Y40-59 From 40 to 59 years 34 38 168 108 92 89 82 98 95 99 91 102 97 71 84 85 56 86 92 113 74 56 87 86 91 72 64 75 94 62 75 66 77 65 84 88 60 77 66 72 76 83 74 91 64 90 93 88 82 87 93 90 61 55 146 125 74 103 72 83 97 70 70 86 90 77 78 86 79 78 67 59 73 85 77 69 61 77 77 82 82 73 76 78 80 66 64 76 72 77 87 64 54 84 72 64 75 76 92 96 81 82 90 88 81 30 154 98 65 90 88 83 103 87 77 89 73 54 78 84 78 78 69 49 70 68 60 64 73 62 76 50 71 57 61 65 72 73 62 61 51 58 62 78 76 87 66 66 70 77 75 59 73 75 78 83 57 17 97 92 69 69 94 72 74 79 55 93 66 70 71 81 79 71 70 78 75 72 57 77 67 71 48 62 66 70 63 66 63 74 69 68 68 70 55 73 49 47 73 67 73 66 84 82 76 76 56 81 72 10 47 62 75 83 65 84 99 72 62 83 82 85 72 77 79 60 54 60 86 69 54 61 57 63 67 45 63 70 62 54 60 46 70 76 59 45 55 53 56 64 62 47 63 69 73 76 92 84 75 80 80 37 92 77 95 77 59 79 68 72 71 51 53 63 49 58 58 53 69 62 68 82 52 87 94 83 85 79 78 75 72 77 66 61 55 68 74 72 69 72 54 64 72 138 166 161 143 153 139 124 119 131 110 65 50 161 96 92 81 102 69 65 75 68 72 76 92 72 72 104 87 73 76 80 73 80 56 64 58 78 66 68 67 43 64 57 62 61 66 72 65 80 78 73 93 105 134 124 117 124 90 91 92 86 76 58 59 94 82 68 91 73 87 77 73 54 73 62 62 55 46 49 63 71 58 61 64 55 54 48 50 46 59 50 58 50 54 69 56 59 50 47 56 75 58 62 64 49 62 57 51 55 52 64 59 78 42 50 55 79 63 76 60 61 57 58 66 43 52 58 42 68 59 63 61 51 42 52 49 45 45 55 57 59 39 57 50 70 60 58 72 54 45 68 49 49 57 43 65 57 54 54 37 58 53 40 62 51 46 60 37 73 77 55 63 72 72 62 62 70 59 74 44 None None None None 38 42 44 70 49 60 51 43 55 61 54 51 53 49 68 49 54 55 52 55 45 56 63 46 55 62 51 58 54 59 52 49 45 56 60 None None None None None None
231 AM Armenia Y60-79 From 60 to 79 years 119 77 491 270 221 273 215 266 268 244 271 263 297 260 245 279 183 255 242 252 217 198 246 227 211 211 185 198 234 180 197 201 243 219 194 156 195 215 189 172 193 205 242 221 236 247 251 247 214 271 211 279 163 151 423 326 254 278 292 235 236 214 212 228 231 227 210 198 198 232 209 212 216 203 220 218 200 206 212 201 197 220 193 187 186 202 205 191 177 191 188 169 268 215 253 223 221 228 231 245 256 276 288 347 235 97 456 306 295 251 237 253 247 243 254 273 242 232 243 200 234 223 229 191 251 196 206 210 195 199 194 200 215 194 211 216 223 200 195 145 180 184 170 175 175 219 210 190 222 229 193 226 222 222 242 225 255 88 351 221 248 228 224 228 223 202 161 276 199 211 206 203 227 219 191 209 199 178 161 202 199 177 162 217 264 234 171 193 196 187 178 175 169 184 134 183 193 160 236 192 186 202 232 232 226 191 224 205 238 52 224 228 243 229 232 218 237 223 195 227 239 222 210 198 204 180 198 183 216 215 225 194 188 189 166 155 191 183 186 210 178 199 194 168 152 180 184 228 184 183 163 179 184 221 217 197 217 220 228 222 274 117 291 284 231 256 238 246 240 240 221 225 227 144 179 202 221 189 212 194 237 216 153 249 256 281 283 273 282 246 260 203 217 201 200 203 204 199 209 203 165 209 233 339 407 512 533 556 552 478 428 372 382 254 212 482 307 290 269 257 257 217 257 221 283 310 338 320 360 333 378 285 261 239 221 210 234 206 219 245 211 211 203 213 186 227 231 226 235 235 264 289 270 289 373 396 459 550 495 492 388 341 332 321 285 192 235 340 265 243 289 276 337 316 288 233 246 198 213 193 202 178 233 214 183 205 221 179 192 217 190 146 147 189 191 214 173 182 179 199 200 217 195 175 209 183 172 171 207 212 205 223 208 202 217 234 231 200 220 291 255 250 213 224 233 239 206 189 212 214 235 211 197 210 206 209 198 193 183 189 196 198 194 186 191 197 198 181 208 217 242 191 203 202 160 176 202 200 215 223 194 213 246 235 213 214 216 239 237 244 214 309 268 264 234 256 268 255 269 222 244 233 219 None None None None 215 229 202 255 237 221 238 216 196 188 214 222 199 208 204 210 205 226 215 219 215 207 227 220 234 244 231 230 274 214 219 263 229 245 256 None None None None None None
232 AM Armenia Y_GE80 80 years or over 83 66 389 266 214 219 190 226 244 201 215 233 260 218 242 213 144 219 211 209 184 196 198 177 186 203 190 186 184 156 175 182 174 203 178 125 153 164 164 177 145 146 202 184 172 184 190 226 179 220 238 241 146 124 376 291 211 251 236 237 204 164 215 195 199 195 187 223 209 193 206 193 190 187 213 194 186 198 189 174 162 212 195 148 179 204 155 170 160 142 163 163 177 172 196 202 178 205 242 222 236 283 285 330 278 84 464 304 277 255 275 236 262 230 202 230 252 223 229 272 213 193 247 168 212 186 195 207 197 187 179 183 183 175 196 188 230 214 180 165 147 153 137 153 147 173 191 223 217 221 214 187 214 211 215 222 223 64 356 278 256 222 253 243 248 192 182 260 207 200 157 158 173 188 203 196 179 179 180 177 178 180 198 244 253 236 160 167 187 159 160 147 177 153 141 167 179 122 205 211 199 185 223 222 227 216 204 189 205 52 215 273 265 244 237 243 210 220 227 261 231 242 199 236 190 197 212 237 253 211 175 211 185 190 237 147 223 196 197 186 176 172 195 184 142 149 167 195 184 193 172 205 192 210 192 211 241 209 265 191 262 90 291 256 263 219 263 245 243 280 275 251 227 172 203 218 219 200 206 232 224 249 181 299 259 242 263 264 280 209 290 259 199 198 217 172 185 198 164 194 177 200 228 275 366 501 483 540 515 450 401 388 384 270 194 503 290 268 265 281 260 215 247 209 241 254 279 292 301 328 318 267 265 239 217 237 212 211 216 277 213 195 190 178 162 202 198 221 231 210 228 239 243 269 313 341 369 433 445 425 384 334 297 290 272 227 270 352 284 241 315 352 433 493 396 301 269 243 218 235 176 163 206 186 162 203 184 173 190 184 171 138 146 196 201 211 159 181 174 188 171 178 161 165 210 159 174 164 154 183 177 176 182 173 172 203 184 222 183 261 219 227 220 195 201 203 213 216 227 214 200 176 190 183 171 168 176 177 158 154 142 155 141 154 136 144 155 152 161 165 200 184 154 148 129 124 164 156 185 151 198 175 182 207 181 169 176 205 172 217 167 258 221 220 235 223 220 204 208 197 244 186 180 None None None None 197 163 134 191 154 164 187 177 185 137 164 154 157 148 181 173 192 165 159 165 145 148 174 162 161 184 175 191 180 217 186 191 183 214 206 None None None None None None
233 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
234 Special value NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
235 None not available NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
236 Observation flags: NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
237 p provisional NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
In [9]:
# This code processes the raw death data (dd) by restructuring it into a long-form dataframe. 
# Each row in the new dataframe represents a single country's deaths for a specific year and week, 
# along with additional metadata such as country abbreviations and derived values.

temp = dd.melt(id_vars=['name','abbr','agegrp','agegrp_desc'],var_name='year-week',value_name='deaths')
temp['year'] = pd.to_numeric(temp['year-week'].str[0:4])
temp['week'] = pd.to_numeric(temp['year-week'].str[6:8])
temp['year.week'] = temp['year'] + temp['week']/100
temp['year.p'] = temp['year'] + (temp['week']/53.001)
dd = temp
In [10]:
# lets remove some data we don't need

# this is a combination of 27 countries
dd = dd[dd['abbr']!= 'EU27_2020'] 


dd = dd[dd['abbr']!= 'not available']
dd = dd[dd['abbr']!= 'Special value']
dd = dd[dd['abbr']!= 'None']
dd = dd[dd['abbr']!= 'Observation flags:']
dd = dd[dd['abbr']!= 'p']

# too early for 2025
dd = dd[dd['year']!= 2025]

dd = dd[~dd['name'].isna()]
dd = dd[~dd['agegrp'].isna()]

# we don't need these columns 
dd.drop(columns=['agegrp_desc'], inplace=True)
dd.drop(columns=['year-week'], inplace=True)

# converting columns 
dd['deaths'] = pd.to_numeric(dd['deaths'])
In [11]:
# there are quite a few NAN (not a number) values
# here we get rid of them 

# Get counts of NA values for each 'abbr' group
na_counts = dd[dd.deaths.isna()].groupby(['abbr','agegrp']).size()

# Filter for 'abbr' groups with more than 12 NA values
filtered_abbrs = na_counts[na_counts > 12*5].index

for abbr, agegrp in filtered_abbrs:
    print(f'removing -- {abbr} {abbr_to_name(abbr)} {agegrp} NACount={na_counts[(abbr, agegrp)]}')
    # Corrected filtering condition: remove rows where abbr and agegrp match separately
    dd = dd[~((dd.abbr == abbr) & (dd.agegrp == agegrp))]  # Use bitwise AND & inside the negation
    # print(len(dd))
removing -- AD Andorra TOTAL NACount=261
removing -- AD Andorra Y20-39 NACount=261
removing -- AD Andorra Y40-59 NACount=261
removing -- AD Andorra Y60-79 NACount=261
removing -- AD Andorra Y_GE80 NACount=261
removing -- AD Andorra Y_LT20 NACount=261
removing -- AL Albania TOTAL NACount=171
removing -- AL Albania Y20-39 NACount=171
removing -- AL Albania Y40-59 NACount=171
removing -- AL Albania Y60-79 NACount=171
removing -- AL Albania Y_GE80 NACount=171
removing -- AL Albania Y_LT20 NACount=171
removing -- GE Georgia TOTAL NACount=208
removing -- GE Georgia Y20-39 NACount=208
removing -- GE Georgia Y40-59 NACount=208
removing -- GE Georgia Y60-79 NACount=208
removing -- GE Georgia Y_GE80 NACount=208
removing -- GE Georgia Y_LT20 NACount=208
removing -- IE Ireland Y20-39 NACount=522
removing -- IE Ireland Y40-59 NACount=522
removing -- IE Ireland Y60-79 NACount=522
removing -- IE Ireland Y_GE80 NACount=522
removing -- IE Ireland Y_LT20 NACount=522
removing -- UK United Kingdom TOTAL NACount=210
removing -- UK United Kingdom Y20-39 NACount=210
removing -- UK United Kingdom Y40-59 NACount=211
removing -- UK United Kingdom Y60-79 NACount=210
removing -- UK United Kingdom Y_GE80 NACount=210
removing -- UK United Kingdom Y_LT20 NACount=210
In [12]:
# Fill missing values (NaNs) in the 2024 data with the mean deaths for 2024 by country

# Filter data for the year 2024
df_2024 = dd[dd.year == 2024]

# Group the 2024 data by country abbreviation ('abbr') and calculate summary statistics
grouped = df_2024.groupby(['abbr','agegrp'])

# Compute statistics: mean, total count, number of NaNs, total deaths, and mean deaths per week
stats = grouped['deaths'].agg(
    Mean='mean',                        # Average deaths for each country in 2024
    Count='size',                       # Total number of records for each country in 2024
    NACount=lambda x: x.isna().sum(),   # Count of missing (NaN) values
    SumFor2024='sum'                    # Total deaths for each country in 2024
).reset_index()

# Replace missing death values in 2024 with the calculated mean for each country
for _, row in stats.iterrows():
    dd.loc[
        (dd.abbr == row['abbr']) & (dd.agegrp == row['agegrp']) & (dd.year == 2024) & (dd.deaths.isna()), 
        'deaths'
    ] = row['Mean']
In [13]:
# we are going to create a new age group, everyone less than 80
# LT80 is less than 80 years old

# exclude where the age is greater than 80
temp = dd.copy()
temp = temp[temp['agegrp'] != 'TOTAL']
temp = temp[temp['agegrp'] != 'Y_GE80']

temp = pd.pivot_table(
    temp, 
    values='deaths', 
    index=['name', 'abbr','year','week','year.week','year.p'], 
    aggfunc='sum'
)
temp = temp.reset_index()

temp['agegrp'] = 'LT80'

dd = pd.concat([dd,temp])
In [14]:
# checking the data
display(dd.head(5))
display(dd.tail(5))
name abbr agegrp deaths year week year.week year.p
5 Belgium BE TOTAL 2461.000 2015 1 2015.010 2015.019
6 Belgium BE Y_LT20 19.000 2015 1 2015.010 2015.019
7 Belgium BE Y20-39 34.000 2015 1 2015.010 2015.019
8 Belgium BE Y40-59 191.000 2015 1 2015.010 2015.019
9 Belgium BE Y60-79 756.000 2015 1 2015.010 2015.019
name abbr agegrp deaths year week year.week year.p
17221 Switzerland CH LT80 420.000 2024 48 2024.480 2024.906
17222 Switzerland CH LT80 414.000 2024 49 2024.490 2024.925
17223 Switzerland CH LT80 466.000 2024 50 2024.500 2024.943
17224 Switzerland CH LT80 472.000 2024 51 2024.510 2024.962
17225 Switzerland CH LT80 501.000 2024 52 2024.520 2024.981
In [15]:
# save to out folder
dd.to_csv(r'out\death_data.csv',index=False)
In [16]:
ddy = pd.pivot_table(
    dd,
    values='deaths',
    index=['name', 'abbr','agegrp','year'], 
    aggfunc='sum'
)
ddy = ddy.reset_index()

display(ddy.head(5))
display(ddy.tail(5))

# save to out folder
ddy.to_csv(r'out\death_data_year.csv',index=False)
name abbr agegrp year deaths
0 Armenia AM LT80 2015 17785.000
1 Armenia AM LT80 2016 17334.000
2 Armenia AM LT80 2017 16426.000
3 Armenia AM LT80 2018 15379.000
4 Armenia AM LT80 2019 14880.000
name abbr agegrp year deaths
2315 Switzerland CH Y_LT20 2020 491.000
2316 Switzerland CH Y_LT20 2021 468.000
2317 Switzerland CH Y_LT20 2022 511.000
2318 Switzerland CH Y_LT20 2023 451.000
2319 Switzerland CH Y_LT20 2024 399.000
In [17]:
# here we normalize the death values

ddn = ddy.copy()
ddn['deaths_norm'] = 0.0

## baseline years are 2015,2016,2017 before the pandemic 
blyears = ddn[ddn.year.isin([2015,2016,2017])]
grouped = blyears.groupby(['abbr','agegrp'])

# Compute baseline mean
temp = grouped['deaths'].agg(
    baseline='mean',
).reset_index()

# Merge baseline means with the original DataFrame
ddn = ddn.merge(temp, on=['abbr', 'agegrp'], how='left')

# Normalize deaths column
ddn['deaths_norm'] = ddn['deaths'] / ddn['baseline']

# Drop the intermediate baseline column if not needed
ddn.drop(columns=['baseline'], inplace=True)

# save to out folder
ddn.to_csv(r'out\death_data_norm.csv',index=False)

cause of death¶

Getting the Data¶

  1. go to Europa.eu - Database
  2. choose
    • Population and social conditions
    • Health
    • Causes of death
    • General mortality
    • Causes of death - deaths by country of residence and occurrence
  3. Click the little table 󰓫
  4. customize the data
    • Customize your dataset -> Time -> From - to
      • From: 2015
      • To: [Current or Max]
    • Customize your dataset -> International Statistical Classification of Diseases and Related Health Problems (ICD-10 2010)
      • All
        • UnCheck All
      • Level 1
        • All Checked
        • Level 1 is basic classification of the cause of death

    • Move the ``International Statistical Classification...underGeopolitical entity (reporting)`
  5. Click download (as a spreadsheet) and place the file in the .\data folder

No description has been provided for this image
No description has been provided for this image

variables¶

  • cod = cause of death data
  • codn = cod, normalized
In [18]:
# getting the data 

# Level 1
cod = pd.read_excel(os.path.join(DataDIR,"hlth_cd_aro__custom_15699666_page_spreadsheet.xlsx"),sheet_name = "Sheet 1")

# Aggregate 
# cod = pd.read_excel(os.path.join(DataDIR,"hlth_cd_aro__custom_15989358_page_spreadsheet.xlsx"),sheet_name = "Sheet 1")

# remove the headers
cod = cod.iloc[9::]

# drop the bad columns
for c in cod.columns:
    if pd.isnull(cod.at[9,c]):
        cod = cod.drop(columns=[c])

# rename time columns
for c in cod.columns:
    name = cod.at[9,c]
    cod = cod.rename(columns={c: name})

# make the duplicate column names unique
cod = df_column_uniquify(cod)

# # rename the first two columns
cod = cod.rename(columns={'TIME': 'name'})
cod = cod.rename(columns={'TIME_1':'cod'})
           
# drop, replace, reset index,
cod = cod.drop([9,10])
cod = cod.replace(to_replace=':', value=None)
cod = cod.reset_index(drop=True)

cod['abbr'] = cod['name'].apply(name_to_abbr)

# display(cod.head(5))
C:\Users\JGarza\pythons\Python312\Lib\site-packages\openpyxl\styles\stylesheet.py:237: UserWarning: Workbook contains no default style, apply openpyxl's default
  warn("Workbook contains no default style, apply openpyxl's default")
In [19]:
# This code processes the raw cod data (cod) by restructuring it into a long-form dataframe. 
# along with additional metadata such as country abbreviations and derived values.

temp = cod.melt(id_vars=['name','abbr','cod'],var_name='year',value_name='deaths')
temp['year'] = pd.to_numeric(temp['year'])
cod = temp

# display(cod.head(10))
In [20]:
# lets remove some data we don't need

# this is a combination of 27 countries
cod.loc[cod['name']== 'European Union - 27 countries (from 2020)','abbr'] = 'Euro27'

cod = cod[cod['name']!= 'not available']
cod = cod[cod['name']!= 'Special value']
cod = cod[cod['name']!= 'None']
cod = cod[cod['name']!= 'Observation flags:']
cod = cod[cod['name']!= 'p']
cod = cod[cod['name']!= 'Nan']
cod = cod[cod['name']!= 'd']

cod = cod[~cod['name'].isna()]

# removed due to lack of reporting data 
cod = cod[cod['abbr']!= 'Euro27']
cod = cod[cod['abbr']!= 'Unknown']
cod = cod[cod['abbr']!= 'UK']
cod = cod[cod['abbr']!= 'LI']


# display(cod.tail(10))
In [21]:
# if a cause of death is null, we'll fill it with 0

# cod['deaths'].fillna(0, inplace=True) #deprecated
cod['deaths'] = pd.to_numeric(cod['deaths'], errors='coerce').fillna(0).astype(int)
In [22]:
# save to out folder
cod.to_csv(r'out\cod_data.csv',index=False)
In [23]:
# here we normalize the cod data 

codn = cod.copy()
codn['deaths_norm'] = np.nan

## baseline years are 2015,2016,2017 before the pandemic 
blyears = codn[codn.year.isin([2015,2016,2017])]
grouped = blyears.groupby(['name','cod'])

# Compute baseline mean
temp = grouped['deaths'].agg(
    baseline='mean',
).reset_index()

# Merge baseline means with the original DataFrame
codn = codn.merge(temp, on=['name', 'cod'], how='left')

codn['baseline'] = codn['baseline'].replace(0, np.nan)

# set the death_norm to deaths/balseline
# * if the baseline is not NA
# * if the deaths is not NA
codn.loc[(~codn['baseline'].isna()) & (~codn['deaths'].isna()), 'deaths_norm'] = codn['deaths'] / codn['baseline']

# Drop the intermediate baseline column if not needed
codn.drop(columns=['baseline'], inplace=True)

# # save to out folder
codn.to_csv(r'out\cod_data_norm.csv',index=False)

# display(codn.head(1000))

vaccine data¶

Getting the Data¶

  1. Go to https://www.ecdc.europa.eu/
  2. Click the Download in CSV.

variables¶

  • vd = vaccine data
In [24]:
# import Vaccine Data 
vd = pd.read_csv(os.path.join(DataDIR,'data.csv'))

# create a year column
vd['year'] = pd.to_numeric(vd['YearWeekISO'].str[0:4])

# renaming columns for shorter names
vd = vd.rename(columns={'ReportingCountry':'abbr'})
vd = vd.rename(columns={'Vaccine':'vacc'})
vd = vd.rename(columns={'FirstDose':'dose1'})
vd = vd.rename(columns={'SecondDose':'dose2'})
vd = vd.rename(columns={'DoseAdditional1':'doesA1'})
vd = vd.rename(columns={'DoseAdditional2':'doesA2'})
vd = vd.rename(columns={'DoseAdditional3':'doesA3'})
vd = vd.rename(columns={'DoseAdditional4':'doesA4'})
vd = vd.rename(columns={'DoseAdditional5':'doesA5'})
vd = vd.rename(columns={'UnknownDose':'doseUNK'})

doseCol = ['dose1','dose2','doesA1','doesA2','doesA3','doesA4','doesA5','doseUNK']
# calculate the sum of all the Doses
vd = pd.pivot_table(
    data = vd,
    values = doseCol,
    index = ['abbr','year','Population','vacc'],
    aggfunc="sum"
    )
vd = vd.reset_index()

# gets get the total doses given 
vd['total_dose'] = vd[doseCol].sum(axis=1)
doseCol.append('total_dose')

# lets make a new record for all vaccines
temp = pd.pivot_table(
    data = vd,
    values = doseCol,
    index = ['abbr','year','Population'],
    aggfunc="sum"
    )
temp = temp.reset_index()
temp['vacc'] = 'All'

# and add it to all the vaccine data
vd = pd.concat([vd,temp])


# gets get the total dose1 (first dose) given 
vd['total_dose1'] = vd['dose1']

# dose1 ... cumulative sum, dose1/pop. , dose1/pop. normalize 
vd['td1_sum'] = vd.groupby(['abbr','vacc'])['total_dose1'].cumsum()
vd['dose1_pop_ratio'] = vd['td1_sum']/vd['Population']
## normalizsed version
vd['dpr1_norm'] = (vd['dose1_pop_ratio'] - vd['dose1_pop_ratio'].min()) / (vd['dose1_pop_ratio'].max() - vd['dose1_pop_ratio'].min())

vd['td_sum'] = vd.groupby(['abbr','vacc'])['total_dose'].cumsum()
vd['dose_pop_ratio'] = vd['td_sum']/vd['Population']
## normalizsed version
vd['dpr_norm'] = (vd['dose_pop_ratio'] - vd['dose_pop_ratio'].min()) / (vd['dose_pop_ratio'].max() - vd['dose_pop_ratio'].min())

vd['name'] = vd.abbr.apply(abbr_to_name)

# display(vd.head(5))
# display(vd.tail(5))

# save to out folder
vd.to_csv(r'out\vacc_data.csv',index=False)

# display(vd.head(100))

# an example of a few 
display(vd[(vd['abbr']=='FI') & (vd['vacc']=='All')])
display(vd[(vd['abbr']=='SK') & (vd['vacc']=='All')])
display(vd[(vd['abbr']=='RO') & (vd['vacc']=='All')])
abbr year Population vacc doesA1 doesA2 doesA3 doesA4 doesA5 dose1 dose2 doseUNK total_dose total_dose1 td1_sum dose1_pop_ratio dpr1_norm td_sum dose_pop_ratio dpr_norm name
40 FI 2020 5525292 All 0 0 0 0 0 34302 0 0 34302 34302 34302 0.006 0.001 34302 0.006 0.000 Finland
41 FI 2021 5533793 All 7677764 5430 0 0 0 26074546 24837830 0 58595570 26074546 26108848 4.718 0.963 58629872 10.595 0.711 Finland
42 FI 2022 5548241 All 10775614 7285662 2852542 0 0 1070686 1267740 0 23252244 1070686 27179534 4.899 1.000 81882116 14.758 0.991 Finland
43 FI 2023 5548241 All 46016 287352 419144 0 0 8336 11466 0 772314 8336 27187870 4.900 1.000 82654430 14.897 1.000 Finland
abbr year Population vacc doesA1 doesA2 doesA3 doesA4 doesA5 dose1 dose2 doseUNK total_dose total_dose1 td1_sum dose1_pop_ratio dpr1_norm td_sum dose_pop_ratio dpr_norm name
114 SK 2020 5457873 All 0 0 0 0 0 9074 10 0 9084 9074 9074 0.002 0.000 9084 0.002 0.000 Slovakia
115 SK 2021 5459781 All 2207200 10 0 0 0 5417526 4894039 0 12518775 5417526 5426600 0.994 0.203 12527859 2.295 0.154 Slovakia
116 SK 2022 5434712 All 1155790 147247 1339 0 0 117886 215301 0 1637563 117886 5544486 1.020 0.208 14165422 2.606 0.175 Slovakia
117 SK 2023 5434712 All 1331 9468 973 0 0 798 648 0 13218 798 5545284 1.020 0.208 14178640 2.609 0.175 Slovakia
abbr year Population vacc doesA1 doesA2 doesA3 doesA4 doesA5 dose1 dose2 doseUNK total_dose total_dose1 td1_sum dose1_pop_ratio dpr1_norm td_sum dose_pop_ratio dpr_norm name
103 RO 2021 19201662 All 3476669 0 0 0 0 24218464 17822935 0 45518068 24218464 24218464 1.261 0.257 45518068 2.371 0.159 Romania
104 RO 2022 19042455 All 1870277 79412 0 0 0 592941 606281 0 3148911 592941 24811405 1.303 0.266 48666979 2.556 0.172 Romania
105 RO 2023 19042455 All 8614 22476 0 0 0 6675 5265 0 43030 6675 24818080 1.303 0.266 48710009 2.558 0.172 Romania

combine all data¶

variables¶

cd = combined data

In [25]:
cols = ['name','abbr', 'year','source', 'filter','value_type','value']

cd = pd.DataFrame(columns=cols)


# deaths data 
temp = ddy.copy()

temp['source'] = 'deaths'
temp['filter'] = temp['agegrp']
temp['value_type'] = 'value'
temp['value'] = temp['deaths']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])

# deaths data normalized 

temp = ddn.copy()

temp['source'] = 'deaths'
temp['filter'] = temp['agegrp']
temp['value_type'] = 'normalized'
temp['value'] = temp['deaths_norm']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])

# cause of death data

temp = cod.copy()

temp['source'] = 'cause_of_death'
temp['filter'] = temp['cod']
temp['value_type'] = 'value'
temp['value'] = temp['deaths']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])


# cause of death data normalized

temp = codn.copy()

temp['source'] = 'cause_of_death'
temp['filter'] = temp['cod']
temp['value_type'] = 'normalized'
temp['value'] = temp['deaths_norm']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])


# Vaccine Data - total_dose1

temp = vd.copy()

temp['source'] = 'vaccine'
temp['filter'] = temp['vacc']
temp['value_type'] = 'value (first dose)'
temp['value'] = temp['total_dose1']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])

# Vaccine Data - total_dose1/pop

temp = vd.copy()

temp['source'] = 'vaccine'
temp['filter'] = temp['vacc']
temp['value_type'] = 'ratio (first dose/pop.)'
temp['value'] = temp['dose1_pop_ratio']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])


# Vaccine Data - total_dose1/pop normalizsed

temp = vd.copy()

temp['source'] = 'vaccine'
temp['filter'] = temp['vacc']
temp['value_type'] = 'normalized (first dose/pop.)'
temp['value'] = temp['dpr1_norm']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])


# Vaccine Data - total_dose

temp = vd.copy()

temp['source'] = 'vaccine'
temp['filter'] = temp['vacc']
temp['value_type'] = 'value (total_dose)'
temp['value'] = temp['total_dose']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])

# Vaccine Data - dose_pop_ratio
temp = vd.copy()

temp['source'] = 'vaccine'
temp['filter'] = temp['vacc']
temp['value_type'] = 'ratio (total_dose/pop.)'
temp['value'] = temp['dose_pop_ratio']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])

# Vaccine Data - dpr_norm
temp = vd.copy()

temp['source'] = 'vaccine'
temp['filter'] = temp['vacc']
temp['value_type'] = 'normalized (total_dose/pop.)'
temp['value'] = temp['dpr_norm']

for c in temp.columns:
    if c not in cols:
        temp = temp.drop(columns=[c])

cd = pd.concat([cd,temp])


display(cd.tail(5))
display(cd[(cd['source'] == 'deaths') & (cd['value_type'] == 'normalized')].tail(5))

# save to out folder
cd.to_csv(r'out\combined_data.csv',index=False)
C:\Users\JGarza\AppData\Local\Temp\ipykernel_40452\3464685614.py:18: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.
  cd = pd.concat([cd,temp])
name abbr year source filter value_type value
113 Slovenia SI 2023 vaccine All normalized (total_dose/pop.) 0.190
114 Slovakia SK 2020 vaccine All normalized (total_dose/pop.) 0.000
115 Slovakia SK 2021 vaccine All normalized (total_dose/pop.) 0.154
116 Slovakia SK 2022 vaccine All normalized (total_dose/pop.) 0.175
117 Slovakia SK 2023 vaccine All normalized (total_dose/pop.) 0.175
name abbr year source filter value_type value
2315 Switzerland CH 2020 deaths Y_LT20 normalized 0.974
2316 Switzerland CH 2021 deaths Y_LT20 normalized 0.929
2317 Switzerland CH 2022 deaths Y_LT20 normalized 1.014
2318 Switzerland CH 2023 deaths Y_LT20 normalized 0.895
2319 Switzerland CH 2024 deaths Y_LT20 normalized 0.792
In [26]:
sources = cd['source'].drop_duplicates().to_list()

for s in sources:
    print('source: ',s)
    filters = cd[cd['source']==s]['filter'].drop_duplicates().to_list()
    print('filter:')
    print('\t',filters)
    value_types = cd[cd['source']==s]['value_type'].drop_duplicates().to_list()
    print('value_type:')
    print('\t',value_types)
    print('---')
source:  deaths
filter:
	 ['LT80', 'TOTAL', 'Y20-39', 'Y40-59', 'Y60-79', 'Y_GE80', 'Y_LT20']
value_type:
	 ['value', 'normalized']
---
source:  cause_of_death
filter:
	 ['Malignant neoplasms (C00-C97)', 'Endocrine, nutritional and metabolic diseases (E00-E90)', 'Mental and behavioural disorders (F00-F99)', 'Diseases of the circulatory system (I00-I99)', 'Diseases of the respiratory system (J00-J99)', 'Diseases of the digestive system (K00-K93)', 'Diseases of the skin and subcutaneous tissue (L00-L99)', 'Diseases of the musculoskeletal system and connective tissue (M00-M99)', 'Diseases of the genitourinary system (N00-N99)', 'Pregnancy, childbirth and the puerperium (O00-O99)', 'Certain conditions originating in the perinatal period (P00-P96)', 'Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99)', 'Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99)']
value_type:
	 ['value', 'normalized']
---
source:  vaccine
filter:
	 ['AZ', 'COM', 'COMBA.1', 'COMBA.4-5', 'JANSS', 'MOD', 'MODBA.1', 'NVXD', 'SGSK', 'UNK', 'VLA', 'MODBA.4-5', 'COMXBB', 'COMBIV', 'MODBIV', 'BECNBG', 'SPU', 'SIN', 'BHACOV', 'All']
value_type:
	 ['value (first dose)', 'ratio (first dose/pop.)', 'normalized (first dose/pop.)', 'value (total_dose)', 'ratio (total_dose/pop.)', 'normalized (total_dose/pop.)']
---

Lets Visualize the Data¶

Line Charts - normalized deaths¶

  • Note the chart below shows that all the countries went through the pandemic 2020-2021, however some countries recovered (1.0 or less), and other countries still have higher than normal death rates (over 1.0).
In [27]:
title = 'Line Chart - normalized deaths in Europe 2015-2024 (by year)'
display(MD(f'### {title}'))

temp = cd[(cd['source']=='deaths') & (cd['filter']=='TOTAL') & (cd['value_type']=='normalized')]
temp = temp.sort_values(by='value', ascending=True)
temp = temp.sort_values(by='year', ascending=True)

fig = px.line(
    temp,
    x='year',
    y='value',
    color='name',
    height=750 ,
    hover_data={
        'name', 'abbr', 'value'
    },
    title=title
    )
fig.update_layout(template="plotly_dark")

Line Chart - normalized deaths in Europe 2015-2024 (by year)¶

In [28]:
title = 'Line Chart - normalized deaths in Europe 2015-2024 (by year)'
display(MD(f'### {title}'))

subtitle = 'Only the top 5 values in 2024, and the bottom 5 values in 2024'
display(MD(f'#### {subtitle}'))

temp = cd[(cd['source']=='deaths') & (cd['filter']=='TOTAL') & (cd['value_type']=='normalized')]

head2024 = temp[(temp['year']==2024)].sort_values(by='value', ascending=False).head(5)
tail2024 = temp[(temp['year']==2024)].sort_values(by='value', ascending=False).tail(5)


temp = temp[
    (temp['name'].isin(head2024.name))
    | (temp['name'].isin(tail2024.name))
    ]


temp = temp.sort_values(by='value', ascending=True)
temp = temp.sort_values(by='year', ascending=True)

fig = px.line(
    temp,
    x='year',
    y='value',
    color='name',
    height=750 ,
    hover_data={
        'name', 'abbr', 'value'
    },
    title=title
    )
fig.update_layout(template="plotly_dark")

Line Chart - normalized deaths in Europe 2015-2024 (by year)¶

Only the top 5 values in 2024, and the bottom 5 values in 2024¶

  • Note here we can see some data might not be trust-worthy. see Liechtenstein
In [29]:
title = 'Line Chart - normalized deaths in Europe 2015-2024 (by year)'
display(MD(f'### {title}'))

display(MD(f'#### Only the top 5 values in 2024, and the bottom 5 values in 2024'))
display(MD(f'#### Only where the deaths are from people who are less than 80 years old'))

temp = cd[(cd['source']=='deaths') & (cd['filter']=='LT80') & (cd['value_type']=='normalized')]

head2024 = temp[(temp['year']==2024)].sort_values(by='value', ascending=False).head(5)
tail2024 = temp[(temp['year']==2024)].sort_values(by='value', ascending=False).tail(5)


temp = temp[
    (temp['name'].isin(head2024.name))
    | (temp['name'].isin(tail2024.name))
    ]

temp = temp.sort_values(by='value', ascending=True)
temp = temp.sort_values(by='year', ascending=True)


fig = px.line(
    temp,
    x='year',
    y='value',
    color='name',
    height=750 ,
    hover_data={
        'name', 'abbr', 'value'
    },
    title=title
    )
fig.update_layout(template="plotly_dark")

Line Chart - normalized deaths in Europe 2015-2024 (by year)¶

Only the top 5 values in 2024, and the bottom 5 values in 2024¶

Only where the deaths are from people who are less than 80 years old¶

HeatMaps of deaths by AgeGroups¶

In [30]:
display(MD('### HeatMap (of deaths based on age groups)'))

agegrps = cd[(cd['source']=='deaths')]['filter'].drop_duplicates().to_list()

for ag in agegrps:
    display(MD(f'#### {ag}'))
    temp = cd[(cd['source']=='deaths') & (cd['filter']==ag) & (cd['value_type']=='normalized')]

    temp = pd.pivot_table(
        data = temp,
        values = 'value',
        index = ['abbr','name','filter','value_type'],
        columns=['year'],
        aggfunc='mean',
    )
    temp.columns.name = 'index' 
    temp = temp.reset_index()

    ## sum of post pandemic deaths
    sppd = pd.pivot_table(
        cd[(cd['source']=='deaths') & (cd['filter']==ag) & (cd['value_type']=='normalized') & (cd['year'] > 2023)], # totals only 
        values = 'value',
        index = ['abbr','name'],
        aggfunc='sum',
    )
    sppd = sppd.reset_index()
    sppd = sppd.sort_values(by='value',ascending=False)
    
    temp = temp.set_index('name').reindex(sppd['name']).reset_index()

    display(temp.style.background_gradient(cmap=heatmapCM,axis=1))

HeatMap (of deaths based on age groups)¶

LT80¶

index name abbr filter value_type 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
0 Iceland IS LT80 normalized 0.963504 1.036496 1.000000 1.019812 1.012513 1.105318 1.123045 1.273201 1.211679 1.234619
1 Malta MT LT80 normalized 1.017293 0.967203 1.015504 1.057841 1.036971 1.166369 1.196780 1.207513 1.124031 1.163387
2 Netherlands NL LT80 normalized 1.009040 0.998123 0.992837 1.013964 1.004492 1.114691 1.143528 1.122958 1.113380 1.110753
3 Norway NO LT80 normalized 1.003819 0.998207 0.997974 1.013113 1.015627 1.033864 1.050348 1.137911 1.107398 1.106405
4 Liechtenstein LI LT80 normalized 0.876923 1.107692 1.015385 1.007692 0.946154 1.115385 0.976923 0.000000 0.953846 1.092308
5 France FR LT80 normalized 1.012897 0.989268 0.997835 1.006304 1.003646 1.094593 1.112343 1.124722 1.086984 1.085468
6 Cyprus CY LT80 normalized 1.026756 0.958661 1.014583 1.020289 1.053005 1.140122 1.280878 1.213923 1.143546 1.070885
7 Spain ES LT80 normalized 1.029906 0.983827 0.986268 0.997999 0.994437 1.164643 1.109420 1.114142 1.082376 1.068357
8 Finland FI LT80 normalized 1.000246 1.000328 0.999426 0.998402 0.988075 1.026145 1.040611 1.090771 1.100033 1.050775
9 Luxembourg LU LT80 normalized 0.979849 0.945681 1.074470 1.028211 1.006658 1.077098 1.061854 1.024006 1.026108 1.037147
10 Poland PL LT80 normalized 1.017801 0.981581 1.000618 1.023203 1.018394 1.181092 1.309963 1.115682 1.035903 1.026510
11 Belgium BE LT80 normalized 1.029200 0.986823 0.983978 0.983892 0.964447 1.091920 1.040751 1.042612 1.006225 1.008963
12 Austria AT LT80 normalized 1.016921 0.987902 0.995178 1.019837 1.002171 1.082151 1.076318 1.062049 1.020941 1.007465
13 Slovakia SK LT80 normalized 1.024468 0.976413 0.999120 1.017851 1.008905 1.130455 1.421736 1.114427 1.030183 1.002475
14 Portugal PT LT80 normalized 1.014427 1.003856 0.981716 0.995044 0.976160 1.077223 1.079219 1.056038 1.019550 1.000644
15 Czechia CZ LT80 normalized 1.016100 0.979352 1.004548 1.027520 1.023851 1.174844 1.324658 1.084517 1.020200 0.989842
16 Greece EL LT80 normalized 1.027115 0.983239 0.989646 0.954367 0.959678 1.028211 1.152957 1.074960 1.013372 0.989274
17 Denmark DK LT80 normalized 1.010938 0.999848 0.989214 1.020657 1.005069 1.023020 1.039904 1.069213 1.031748 0.983383
18 Switzerland CH LT80 normalized 1.035616 0.972509 0.991875 0.997235 0.997587 1.061751 1.058817 1.057173 1.011007 0.972313
19 Slovenia SI LT80 normalized 1.029287 0.970468 1.000245 1.000559 0.999616 1.096075 1.121134 1.044700 1.001922 0.966484
20 Estonia EE LT80 normalized 1.030864 0.996006 0.973130 0.977366 0.941782 0.967320 1.096466 0.995885 0.947470 0.960300
21 Montenegro ME LT80 normalized 1.014343 1.010269 0.975388 0.978189 0.983281 1.097853 1.373334 1.026564 0.951201 0.959582
22 Hungary HU LT80 normalized 1.022566 0.974640 1.002795 0.997790 0.984532 1.092329 1.230570 1.037761 0.975407 0.954401
23 Bulgaria BG LT80 normalized 1.019357 0.986378 0.994265 0.990131 0.985726 1.172561 1.436468 1.093518 0.945354 0.942555
24 Serbia RS LT80 normalized 1.037063 0.975378 0.987559 0.964466 0.969101 1.164052 1.333456 0.998404 0.644844 0.942320
25 Armenia AM LT80 normalized 1.035115 1.008866 0.956019 0.895082 0.866039 1.251799 1.237074 0.909807 0.872500 0.926923
26 Italy IT LT80 normalized 1.037174 0.970996 0.991830 0.964604 0.945012 1.095522 1.051458 1.004187 0.949085 0.916106
27 Germany DE LT80 normalized 1.028583 0.988456 0.982961 0.991662 0.958617 0.982483 0.998447 1.003770 0.977197 0.914716
28 Sweden SE LT80 normalized 1.024029 0.989863 0.986107 0.998720 0.958976 1.056766 1.005839 0.994011 0.979409 0.910600
29 Croatia HR LT80 normalized 1.053916 0.963024 0.983060 0.959672 0.932277 1.039490 1.131585 0.990455 0.927541 0.897778
30 Lithuania LT LT80 normalized 1.055938 1.008323 0.935740 0.921503 0.892768 1.045249 1.102589 0.960708 0.870034 0.879276
31 Latvia LV LT80 normalized 1.022160 0.991260 0.986580 0.970320 0.912900 0.951600 1.127640 0.966600 0.895140 0.833580
32 Romania RO LT80 normalized 1.024865 0.986505 0.988630 0.988669 0.976968 1.130885 1.277982 0.997127 0.911279 0.829676

TOTAL¶

index name abbr filter value_type 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
0 Malta MT TOTAL normalized 1.016949 0.955701 1.027350 1.060863 1.064330 1.199538 1.196071 1.219183 1.161980 1.183648
1 Iceland IS TOTAL normalized 0.988146 1.020151 0.991702 1.000148 1.005927 1.042377 1.039265 1.195733 1.140169 1.153060
2 Netherlands NL TOTAL normalized 1.003373 0.993167 1.003460 1.024649 1.015107 1.147749 1.140424 1.133556 1.131250 1.143136
3 Cyprus CY TOTAL normalized 1.029186 0.937156 1.033658 0.997362 1.069610 1.143922 1.241800 1.239908 1.150459 1.124312
4 Ireland IE TOTAL normalized 1.007002 0.998439 0.994559 1.013608 1.002031 1.041412 1.098655 1.128063 1.125593 1.117736
5 Liechtenstein LI TOTAL normalized 0.997423 1.043814 0.958763 1.055412 1.005155 1.256443 1.032216 1.078608 1.020619 1.117268
6 Luxembourg LU TOTAL normalized 0.992076 0.966098 1.041827 1.053835 1.050895 1.143779 1.100400 1.089127 1.081529 1.095744
7 Germany DE TOTAL normalized 1.016481 0.979311 1.004209 1.029001 1.012227 1.082065 1.101127 1.149954 1.106922 1.079127
8 Finland FI TOTAL normalized 0.996378 1.003504 1.000118 1.016952 1.004682 1.051873 1.076956 1.155757 1.143393 1.078209
9 Norway NO TOTAL normalized 1.016140 0.989495 0.994364 0.996615 0.991477 1.008311 1.026049 1.115550 1.065612 1.072463
10 Portugal PT TOTAL normalized 1.006119 1.000327 0.993554 1.024547 1.013474 1.140328 1.128946 1.127418 1.071651 1.067896
11 Austria AT TOTAL normalized 1.023795 0.972870 1.003336 1.012615 1.006371 1.125312 1.104853 1.130013 1.081778 1.067871
12 Denmark DK TOTAL normalized 1.007454 0.991352 1.001194 1.038393 1.014429 1.045972 1.075440 1.117541 1.090769 1.064901
13 France FR TOTAL normalized 1.007603 0.985137 1.007261 1.013398 1.019252 1.131754 1.099201 1.122302 1.061615 1.062469
14 Slovenia SI TOTAL normalized 1.005897 0.975647 1.018456 1.018057 1.023988 1.216257 1.150672 1.118378 1.070087 1.061216
15 Spain ES TOTAL normalized 1.023104 0.971158 1.005738 1.013880 0.992168 1.192895 1.070740 1.101128 1.039692 1.042102
16 Switzerland CH TOTAL normalized 1.031079 0.969066 0.999855 1.002628 1.012027 1.137130 1.058255 1.110659 1.069182 1.037839
17 Estonia EE TOTAL normalized 1.003717 0.992890 1.003393 1.016879 0.994057 1.041062 1.194009 1.115234 1.034320 1.030883
18 Greece EL TOTAL normalized 1.012210 0.969465 1.018325 0.984534 1.022175 1.091374 1.179188 1.151479 1.047889 1.026689
19 Belgium BE TOTAL normalized 1.024324 0.979883 0.995793 1.005480 0.988120 1.170333 1.020196 1.058305 1.012988 1.015740
20 Poland PL TOTAL normalized 1.011934 0.974416 1.013649 1.035756 1.026469 1.222837 1.306178 1.125759 1.027167 1.015246
21 Czechia CZ TOTAL normalized 1.024453 0.970711 1.004837 1.019293 1.014188 1.190285 1.259588 1.084875 1.016894 1.003669
22 Slovakia SK TOTAL normalized 1.023092 0.973345 1.003563 1.011692 0.992593 1.126210 1.363524 1.109279 1.008254 0.995303
23 Italy IT TOTAL normalized 1.028396 0.960289 1.011315 0.983592 0.989873 1.165225 1.087305 1.095037 1.013642 0.986208
24 Montenegro ME TOTAL normalized 0.999019 0.994684 1.006297 1.003200 1.018684 1.138065 1.411355 1.088052 0.977652 0.974413
25 Sweden SE TOTAL normalized 1.019326 0.985579 0.995095 0.995218 0.956506 1.079097 0.985779 1.011546 1.005714 0.969874
26 Hungary HU TOTAL normalized 1.026484 0.967604 1.005912 1.000787 0.990451 1.097414 1.187944 1.041669 0.978737 0.968079
27 Croatia HR TOTAL normalized 1.036057 0.963041 1.000902 0.987618 0.969749 1.088706 1.174273 1.066778 0.959584 0.946901
28 Serbia RS TOTAL normalized 1.024670 0.974227 1.001103 0.980439 0.979254 1.155481 1.318381 1.013430 0.917367 0.925909
29 Armenia AM TOTAL normalized 1.008985 1.007475 0.983540 0.920898 0.919641 1.278886 1.266846 0.964385 0.873495 0.916035
30 Lithuania LT TOTAL normalized 1.034162 0.993484 0.972354 0.959272 0.928441 1.077686 1.154059 1.030467 0.919153 0.914776
31 Latvia LV TOTAL normalized 1.009782 0.991345 0.998873 1.001801 0.963078 1.022469 1.201443 1.055301 0.962590 0.912575
32 Bulgaria BG TOTAL normalized 1.024011 0.977541 0.998447 0.988264 0.984702 1.150005 1.357649 1.080035 0.919335 0.911709
33 Romania RO TOTAL normalized 1.020584 0.981718 0.997698 1.005356 0.993947 1.151277 1.276275 1.026653 0.918109 0.837779

Y20-39¶

index name abbr filter value_type 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
0 Iceland IS Y20-39 normalized 0.794118 1.023529 1.182353 1.200000 0.988235 1.147059 1.129412 1.182353 1.323529 1.217647
1 Netherlands NL Y20-39 normalized 0.995277 1.007084 0.997639 1.011806 1.027745 1.087957 1.122786 1.131051 1.154073 1.190902
2 Austria AT Y20-39 normalized 1.048147 0.980678 0.971175 1.017738 1.014888 0.999683 1.100412 1.123218 1.074755 1.153627
3 Malta MT Y20-39 normalized 0.989189 1.021622 0.989189 1.151351 0.810811 1.151351 0.810811 1.054054 0.924324 1.054054
4 Montenegro ME Y20-39 normalized 0.941019 0.924933 1.134048 0.844504 1.005362 0.997319 1.174263 1.013405 0.997319 1.028150
5 Luxembourg LU Y20-39 normalized 0.994737 0.884211 1.121053 1.121053 1.168421 1.073684 0.978947 1.105263 0.978947 1.026316
6 Norway NO Y20-39 normalized 1.017909 1.020813 0.961278 1.020813 1.019361 1.010649 0.920620 0.962730 1.122459 1.010649
7 France FR Y20-39 normalized 1.035161 0.988817 0.976022 0.991828 0.991183 0.978710 0.997527 1.031290 1.004086 0.983548
8 Portugal PT Y20-39 normalized 1.053143 0.942003 1.004854 0.924374 0.954267 0.997956 0.948901 0.960399 0.958099 0.961165
9 Denmark DK Y20-39 normalized 0.959227 1.071888 0.968884 0.981760 0.976931 1.062232 0.939914 1.015558 0.984979 0.951180
10 Finland FI Y20-39 normalized 0.976999 1.001095 1.021906 0.975904 1.085433 1.059146 0.949617 0.986857 1.047097 0.950712
11 Belgium BE Y20-39 normalized 1.014289 1.005232 0.980479 0.951499 0.909237 0.927953 0.940028 0.906219 0.906219 0.913463
12 Switzerland CH Y20-39 normalized 1.009773 0.981626 1.008600 0.948788 0.921814 0.966380 0.983972 1.002737 0.971071 0.907740
13 Spain ES Y20-39 normalized 1.036045 0.980090 0.983865 0.958774 0.908371 0.995189 0.974761 0.960995 0.959218 0.906373
14 Armenia AM Y20-39 normalized 1.066728 1.026965 0.906307 0.957038 0.822669 2.520110 1.542505 1.026965 0.874771 0.892710
15 Slovakia SK Y20-39 normalized 1.059393 0.984413 0.956195 0.965869 0.981188 0.944907 1.099704 0.969901 0.902177 0.891696
16 Hungary HU Y20-39 normalized 1.072598 0.951419 0.975983 0.948144 0.885371 0.967795 1.144651 0.925218 0.896834 0.887009
17 Czechia CZ Y20-39 normalized 1.060503 0.984560 0.954937 0.979713 0.936625 0.945781 0.997487 0.960323 0.938241 0.877917
18 Poland PL Y20-39 normalized 1.021684 0.990499 0.987817 0.996060 0.985632 1.040158 1.098656 1.035390 0.911342 0.844402
19 Italy IT Y20-39 normalized 1.063570 0.990165 0.946265 0.953729 0.892944 0.881569 0.924048 0.883346 0.865395 0.834647
20 Cyprus CY Y20-39 normalized 1.161290 0.832258 1.006452 1.006452 1.209677 1.122581 1.335484 0.929032 1.248387 0.832258
21 Serbia RS Y20-39 normalized 1.083099 0.952113 0.964789 0.888732 0.884507 0.990141 1.138732 0.957042 0.571831 0.795070
22 Estonia EE Y20-39 normalized 1.039134 1.099084 0.861782 0.756869 0.709409 0.741882 0.809326 0.851790 0.824313 0.794338
23 Slovenia SI Y20-39 normalized 1.060811 1.037162 0.902027 0.875000 0.945946 0.837838 0.820946 0.956081 0.810811 0.793919
24 Sweden SE Y20-39 normalized 1.054507 0.955597 0.989896 1.005850 0.901356 0.914119 0.883807 0.861473 0.906142 0.767349
25 Bulgaria BG Y20-39 normalized 1.060354 1.010520 0.929125 0.954042 0.934662 0.932447 1.182724 0.883167 0.801772 0.761351
26 Croatia HR Y20-39 normalized 1.107878 0.945309 0.946814 0.925740 0.939288 0.918214 0.955845 0.886603 0.812845 0.757150
27 Greece EL Y20-39 normalized 1.070435 1.006182 0.923383 0.937955 0.892250 0.863767 0.948554 0.881652 0.835284 0.716715
28 Romania RO Y20-39 normalized 1.072698 0.969709 0.957593 0.903877 0.897819 0.926898 0.991922 0.782512 0.751010 0.688813
29 Lithuania LT Y20-39 normalized 1.135041 0.986612 0.878347 0.880093 0.798021 0.789290 0.850407 0.729045 0.709837 0.679278
30 Latvia LV Y20-39 normalized 1.052184 0.978155 0.969660 0.867718 0.774272 0.743932 0.902913 0.870146 0.794903 0.675971
31 Liechtenstein LI Y20-39 normalized 0.600000 1.500000 0.900000 1.800000 0.900000 0.900000 0.900000 0.000000 1.500000 0.600000
32 Germany DE Y20-39 normalized 1.031710 0.986478 0.981813 0.984855 0.974004 0.997836 0.997025 1.033738 0.992056 0.000000

Y40-59¶

index name abbr filter value_type 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
0 Liechtenstein LI Y40-59 normalized 1.094595 0.851351 1.054054 0.891892 0.770270 0.648649 0.972973 0.000000 1.094595 1.013514
1 Iceland IS Y40-59 normalized 1.093407 0.912088 0.994505 1.005495 1.115385 1.104396 1.060440 1.082418 1.258242 1.010989
2 Czechia CZ Y40-59 normalized 1.035208 0.988029 0.976763 0.976059 0.972840 1.077859 1.230560 1.035711 1.001811 0.970526
3 Norway NO Y40-59 normalized 1.036278 1.006382 0.957340 0.962042 0.921061 0.942224 0.926772 0.994290 0.956332 0.936177
4 Estonia EE Y40-59 normalized 1.048814 1.014427 0.936759 0.974704 0.935573 0.992490 1.022134 0.972332 0.937352 0.931423
5 Spain ES Y40-59 normalized 1.026911 0.987325 0.985764 0.983054 0.966589 1.053125 1.010711 0.996308 0.956045 0.929124
6 Greece EL Y40-59 normalized 1.021378 0.994886 0.983737 0.964641 0.969056 1.012216 1.144345 1.012326 0.951505 0.909780
7 Luxembourg LU Y40-59 normalized 0.984219 1.026578 0.989203 1.034053 0.996678 1.044020 1.041528 0.959302 0.941860 0.904485
8 Cyprus CY Y40-59 normalized 1.015748 0.981389 1.002863 0.914817 0.970651 1.157480 1.262706 1.039370 1.088762 0.901933
9 Netherlands NL Y40-59 normalized 1.026651 1.007007 0.966341 0.952298 0.920678 0.955055 0.989259 0.958329 0.903532 0.887899
10 Austria AT Y40-59 normalized 1.038582 0.988316 0.973102 1.000099 0.942972 0.985184 0.995774 0.954905 0.905534 0.887784
11 Bulgaria BG Y40-59 normalized 1.019183 0.995337 0.985480 0.973716 0.942875 1.098431 1.304859 0.983334 0.875550 0.886678
12 Portugal PT Y40-59 normalized 1.004711 0.997906 0.997383 0.979483 0.943473 1.018005 0.987753 0.956768 0.915001 0.885690
13 Italy IT Y40-59 normalized 1.036317 0.981260 0.982423 0.974773 0.953359 1.042061 1.032480 0.973140 0.925236 0.874882
14 France FR Y40-59 normalized 1.042235 0.987464 0.970301 0.962393 0.928553 0.963311 0.949071 0.938990 0.893382 0.873726
15 Montenegro ME Y40-59 normalized 1.082461 0.986911 0.930628 1.014398 1.048429 1.018325 1.267016 0.920157 0.829843 0.856457
16 Malta MT Y40-59 normalized 0.974359 1.043956 0.981685 1.025641 0.941392 1.106227 1.084249 1.080586 0.970696 0.846154
17 Germany DE Y40-59 normalized 1.033932 0.998634 0.967435 0.976447 0.935175 0.955307 0.972568 0.933598 0.885293 0.838836
18 Slovakia SK Y40-59 normalized 1.066639 0.965570 0.967791 0.976260 0.922810 0.972928 1.208802 0.965848 0.877690 0.838817
19 Serbia RS Y40-59 normalized 1.058988 0.973158 0.967854 0.926868 0.922528 1.101517 1.196509 0.890510 0.569275 0.835059
20 Belgium BE Y40-59 normalized 1.061509 0.987417 0.951074 0.937338 0.899697 0.965460 0.920681 0.901103 0.854269 0.834151
21 Finland FI Y40-59 normalized 1.042336 1.002190 0.955474 0.953041 0.889538 0.943552 0.910219 0.900973 0.875912 0.827494
22 Hungary HU Y40-59 normalized 1.072314 0.976552 0.951134 0.931626 0.895024 0.950181 1.122450 0.904620 0.824236 0.820995
23 Switzerland CH Y40-59 normalized 1.035309 0.975200 0.989491 0.974989 0.914880 0.922657 0.942833 0.934636 0.876629 0.817781
24 Latvia LV Y40-59 normalized 1.039009 0.992923 0.968068 0.981013 0.898680 0.906447 1.115647 0.944766 0.859066 0.813498
25 Romania RO Y40-59 normalized 1.028697 0.997176 0.974128 0.976735 0.971106 1.053908 1.180850 0.948532 0.886615 0.806273
26 Sweden SE Y40-59 normalized 1.059663 0.985254 0.955083 0.929397 0.890459 0.941628 0.913699 0.876597 0.868443 0.800761
27 Poland PL Y40-59 normalized 1.051089 0.987253 0.961658 0.940221 0.895069 0.957177 1.046741 0.894082 0.811068 0.792992
28 Croatia HR Y40-59 normalized 1.084327 0.956285 0.959388 0.958147 0.905399 0.924843 1.029511 0.866510 0.841274 0.782941
29 Slovenia SI Y40-59 normalized 1.060018 0.975601 0.964381 0.913624 0.875156 0.959038 0.970793 0.875690 0.855387 0.778451
30 Denmark DK Y40-59 normalized 1.042183 1.006376 0.951442 0.957002 0.890503 0.878494 0.875380 0.862481 0.824672 0.777522
31 Lithuania LT Y40-59 normalized 1.063919 1.029615 0.906466 0.860671 0.836659 0.985707 1.007490 0.845235 0.789320 0.775256
32 Armenia AM Y40-59 normalized 1.065157 1.011936 0.922907 0.891024 0.845405 1.067119 1.026161 0.775262 0.707325 0.713129

Y60-79¶

index name abbr filter value_type 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
0 Iceland IS Y60-79 normalized 0.936424 1.078394 0.985182 1.013862 1.006692 1.104207 1.135755 1.346558 1.197419 1.300669
1 Malta MT Y60-79 normalized 1.027934 0.945669 1.026397 1.068683 1.065607 1.194003 1.255510 1.257048 1.183239 1.253203
2 France FR Y60-79 normalized 1.001712 0.990021 1.008267 1.022124 1.029084 1.147847 1.175806 1.192257 1.156656 1.161545
3 Netherlands NL Y60-79 normalized 1.006386 0.996193 0.997421 1.028461 1.022510 1.152640 1.182317 1.161681 1.160779 1.160364
4 Norway NO Y60-79 normalized 0.996253 0.995265 1.008483 1.026410 1.037576 1.058010 1.088243 1.184716 1.142101 1.152432
5 Liechtenstein LI Y60-79 normalized 0.822742 1.153846 1.023411 1.023411 1.013378 1.193980 0.983278 0.000000 0.872910 1.143813
6 Poland PL Y60-79 normalized 1.006538 0.979267 1.014195 1.052696 1.062426 1.268973 1.415998 1.196846 1.120739 1.118838
7 Spain ES Y60-79 normalized 1.030616 0.982768 0.986616 1.004716 1.007285 1.209219 1.147454 1.157316 1.126992 1.117345
8 Cyprus CY Y60-79 normalized 1.023144 0.956687 1.020169 1.042486 1.065796 1.142172 1.285998 1.265664 1.143660 1.115391
9 Finland FI Y60-79 normalized 0.993128 1.000244 1.006628 1.008721 1.004221 1.043101 1.073660 1.138337 1.151367 1.104900
10 Belgium BE Y60-79 normalized 1.021779 0.986703 0.991518 0.997160 0.983882 1.137149 1.080190 1.089907 1.057168 1.066001
11 Slovakia SK Y60-79 normalized 1.008638 0.979238 1.012124 1.033819 1.037392 1.191537 1.516013 1.171823 1.086851 1.062229
12 Portugal PT Y60-79 normalized 1.015604 1.007187 0.977209 1.000874 0.986145 1.099310 1.112425 1.088357 1.051461 1.035291
13 Luxembourg LU Y60-79 normalized 0.977408 0.925327 1.097265 1.021641 0.999524 1.081570 1.071581 1.036623 1.049465 1.034483
14 Austria AT Y60-79 normalized 1.010726 0.987562 1.001712 1.026982 1.016490 1.110993 1.098728 1.089344 1.048483 1.032006
15 Denmark DK Y60-79 normalized 1.005923 0.997159 0.996918 1.035054 1.032309 1.054844 1.079883 1.118500 1.080508 1.027061
16 Slovenia SI Y60-79 normalized 1.020434 0.964492 1.015074 1.028681 1.034592 1.145652 1.174792 1.093833 1.049024 1.023871
17 Greece EL Y60-79 normalized 1.027313 0.977934 0.994753 0.953931 0.961493 1.043055 1.169151 1.103654 1.039826 1.023034
18 Armenia AM Y60-79 normalized 1.022296 1.003221 0.974483 0.898186 0.884368 1.199729 1.282214 0.946677 0.933198 1.017760
19 Switzerland CH Y60-79 normalized 1.035228 0.972487 0.992286 1.004731 1.023708 1.102237 1.093854 1.090666 1.048650 1.017639
20 Czechia CZ Y60-79 normalized 1.010894 0.976813 1.012294 1.040273 1.037745 1.207502 1.362255 1.101247 1.029428 0.999694
21 Hungary HU Y60-79 normalized 1.007109 0.974702 1.018189 1.019195 1.012427 1.137502 1.266804 1.079099 1.020917 0.993624
22 Montenegro ME Y60-79 normalized 1.001448 1.017815 0.980737 0.977063 0.965037 1.124374 1.418662 1.047545 0.980069 0.985024
23 Estonia EE Y60-79 normalized 1.024266 0.984170 0.991564 0.994029 0.960999 0.979240 1.138475 1.014078 0.958863 0.981047
24 Germany DE Y60-79 normalized 1.027855 0.985397 0.986748 0.995439 0.963581 0.989393 1.005570 1.019991 0.998744 0.972759
25 Serbia RS Y60-79 normalized 1.030788 0.976346 0.992867 0.975233 0.982402 1.186175 1.375226 1.026807 0.664629 0.971338
26 Bulgaria BG Y60-79 normalized 1.017113 0.983431 0.999455 0.996418 1.000251 1.207767 1.489684 1.136026 0.972162 0.968141
27 Lithuania LT Y60-79 normalized 1.044912 1.002053 0.953035 0.948736 0.923008 1.092519 1.164314 1.027974 0.916271 0.939625
28 Sweden SE Y60-79 normalized 1.016499 0.992130 0.991371 1.010873 0.974664 1.083152 1.029478 1.020710 1.003072 0.937179
29 Croatia HR Y60-79 normalized 1.045235 0.965003 0.989761 0.961170 0.938629 1.070594 1.163621 1.023295 0.951701 0.930869
30 Italy IT Y60-79 normalized 1.036313 0.968224 0.995463 0.962589 0.946423 1.117576 1.063062 1.018156 0.959284 0.929829
31 Latvia LV Y60-79 normalized 1.014798 0.991500 0.993702 0.975826 0.928212 0.982858 1.155182 0.985145 0.917876 0.855860
32 Romania RO Y60-79 normalized 1.020654 0.984388 0.994957 0.998664 0.985260 1.171096 1.331617 1.027356 0.931207 0.848400

Y_GE80¶

index name abbr filter value_type 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
0 Malta MT Y_GE80 normalized 1.016626 0.944891 1.038483 1.063703 1.090043 1.230712 1.195404 1.230151 1.197646 1.202690
1 Germany DE Y_GE80 normalized 1.006407 0.971699 1.021894 1.060079 1.056850 1.164951 1.186592 1.271628 1.214897 1.187499
2 Netherlands NL Y_GE80 normalized 0.999626 0.988800 1.011575 1.032805 1.023210 1.173788 1.137483 1.141598 1.145123 1.168635
3 Cyprus CY Y_GE80 normalized 1.031191 0.919405 1.049403 0.978438 1.083316 1.147059 1.209546 1.261356 1.156165 1.168411
4 Slovenia SI Y_GE80 normalized 0.984707 0.980338 1.034954 1.033910 1.046068 1.325133 1.177432 1.185125 1.131839 1.147036
5 Luxembourg LU Y_GE80 normalized 1.002755 0.983930 1.013315 1.076217 1.089532 1.202020 1.134068 1.145546 1.129936 1.146924
6 Denmark DK Y_GE80 normalized 1.004042 0.983036 1.012922 1.055755 1.023407 1.068441 1.110229 1.164853 1.148548 1.144705
7 Liechtenstein LI Y_GE80 normalized 1.119171 0.979275 0.901554 1.103627 1.064767 1.398964 1.088083 0.000000 1.088083 1.142487
8 Portugal PT Y_GE80 normalized 1.000130 0.997815 1.002055 1.045915 1.040470 1.185789 1.164868 1.178841 1.109225 1.116408
9 Austria AT Y_GE80 normalized 1.029105 0.961256 1.009639 1.007036 1.009617 1.158656 1.126897 1.182519 1.128778 1.114539
10 Estonia EE Y_GE80 normalized 0.972399 0.989295 1.038306 1.062462 1.054364 1.126135 1.306539 1.252921 1.134512 1.112311
11 Finland FI Y_GE80 normalized 0.993130 1.006171 1.000700 1.032529 1.018627 1.073476 1.107473 1.210323 1.179802 1.101244
12 Iceland IS Y_GE80 normalized 1.006457 1.008006 0.985537 0.985537 1.001033 0.995610 0.977014 1.138171 1.087035 1.092459
13 Switzerland CH Y_GE80 normalized 1.028260 0.966928 1.004811 1.005978 1.020995 1.183948 1.057906 1.143878 1.105314 1.078536
14 Greece EL Y_GE80 normalized 1.002392 0.960390 1.037218 1.004366 1.063222 1.132983 1.196455 1.201615 1.070628 1.051214
15 Norway NO Y_GE80 normalized 1.025010 0.983224 0.991766 0.984739 0.974092 0.989915 1.008556 1.099452 1.035530 1.048029
16 France FR Y_GE80 normalized 1.004114 0.982417 1.013469 1.018071 1.018234 1.142014 1.078183 1.110447 1.036079 1.038563
17 Italy IT Y_GE80 normalized 1.023231 0.953990 1.022779 0.994764 1.016269 1.206237 1.108397 1.148491 1.051627 1.027454
18 Spain ES Y_GE80 normalized 1.019018 0.963549 1.017433 1.023420 0.990805 1.194317 1.047491 1.093311 1.013904 1.026137
19 Belgium BE Y_GE80 normalized 1.020706 0.974733 1.004561 1.021500 1.005688 1.228524 1.004942 1.069950 1.018007 1.020770
20 Czechia CZ Y_GE80 normalized 1.034472 0.960345 1.005183 1.009424 1.002595 1.208808 1.181531 1.085303 1.012929 1.020256
21 Latvia LV Y_GE80 normalized 0.992681 0.991351 1.015968 1.045492 1.032685 1.120758 1.303560 1.175815 1.052146 1.019128
22 Sweden SE Y_GE80 normalized 1.016228 0.982756 1.001015 0.992911 0.954879 1.093806 0.972565 1.023096 1.023041 1.008917
23 Poland PL Y_GE80 normalized 1.004048 0.964785 1.031168 1.052632 1.037325 1.278953 1.301091 1.139304 1.015423 1.000104
24 Croatia HR Y_GE80 normalized 1.017100 0.963122 1.019778 1.017294 1.009650 1.141163 1.219822 1.148148 0.993778 0.999289
25 Montenegro ME Y_GE80 normalized 0.975237 0.970495 1.054268 1.042018 1.073630 1.200474 1.470364 1.183483 1.018704 0.997432
26 Hungary HU Y_GE80 normalized 1.032011 0.957518 1.010471 1.005189 0.998880 1.104543 1.126661 1.047260 0.983313 0.987980
27 Slovakia SK Y_GE80 normalized 1.021014 0.968713 1.010273 1.002392 0.967963 1.119799 1.275623 1.101506 0.975140 0.984474
28 Lithuania LT Y_GE80 normalized 1.006995 0.974970 1.018035 1.006394 0.972948 1.118155 1.218275 1.117499 0.980435 0.959067
29 Serbia RS Y_GE80 normalized 1.008114 0.972719 1.019168 1.001801 0.992752 1.143336 1.297839 1.033937 0.630527 0.904344
30 Armenia AM Y_GE80 normalized 0.966802 1.005230 1.027967 0.962574 1.006170 1.322612 1.314908 1.052490 0.875102 0.898458
31 Bulgaria BG Y_GE80 normalized 1.030293 0.965615 1.004092 0.985744 0.983319 1.119563 1.251279 1.061838 0.884221 0.870080
32 Romania RO Y_GE80 normalized 1.014486 0.974899 1.010615 1.029126 1.018134 1.180326 1.273844 1.068713 0.927839 0.849322

Y_LT20¶

index name abbr filter value_type 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
0 Luxembourg LU Y_LT20 normalized 1.000000 0.944444 1.055556 1.055556 1.111111 1.277778 1.055556 1.111111 1.138889 2.638889
1 Cyprus CY Y_LT20 normalized 0.992308 1.107692 0.900000 1.153846 0.969231 0.900000 1.107692 1.361538 1.476923 1.384615
2 Denmark DK Y_LT20 normalized 0.999054 0.947966 1.052980 1.052980 0.911069 0.922422 0.959319 0.896878 0.882687 1.092715
3 Iceland IS Y_LT20 normalized 1.173913 0.782609 1.043478 0.869565 0.434783 1.043478 1.217391 0.782609 1.000000 1.043478
4 Norway NO Y_LT20 normalized 0.979592 0.993998 1.026411 0.911164 0.979592 0.929172 0.900360 0.893157 1.044418 0.986795
5 Netherlands NL Y_LT20 normalized 0.966754 0.980579 1.052666 0.978604 0.999342 1.036866 0.950955 1.004279 1.012179 0.978786
6 Austria AT Y_LT20 normalized 0.995976 1.016097 0.987928 0.901408 0.993964 0.993964 0.891348 0.891348 0.963783 0.975855
7 Finland FI Y_LT20 normalized 0.941687 0.975186 1.083127 1.034739 1.016129 0.971464 0.993797 0.964020 1.057072 0.956576
8 Spain ES Y_LT20 normalized 1.025691 0.994183 0.980126 0.950557 0.915657 0.854581 0.881726 0.951527 0.912748 0.949103
9 France FR Y_LT20 normalized 1.039097 0.983797 0.977106 0.963527 0.962149 0.899764 0.909210 0.981829 0.935778 0.944831
10 Portugal PT Y_LT20 normalized 1.017308 1.046154 0.936538 1.069231 0.965385 0.890385 0.871154 0.963462 0.965385 0.900000
11 Serbia RS Y_LT20 normalized 1.037875 0.993782 0.968344 0.954777 0.937818 0.929339 0.900509 0.744488 0.581685 0.883550
12 Czechia CZ Y_LT20 normalized 0.976979 1.022459 1.000561 1.010668 1.030882 0.882650 0.892757 0.941606 0.840539 0.869175
13 Slovakia SK Y_LT20 normalized 1.064392 0.981326 0.954282 1.004507 0.994849 1.025757 0.925306 0.952350 0.915647 0.863490
14 Hungary HU Y_LT20 normalized 1.068474 0.987161 0.944365 0.821683 0.918688 0.828816 0.850214 0.861626 0.766049 0.843081
15 Estonia EE Y_LT20 normalized 1.104089 0.992565 0.903346 0.881041 0.791822 0.691450 0.925651 0.847584 0.914498 0.836431
16 Montenegro ME Y_LT20 normalized 0.919708 1.138686 0.941606 0.810219 1.029197 0.963504 0.722628 1.467153 0.963504 0.830292
17 Sweden SE Y_LT20 normalized 1.033414 0.989672 0.976914 0.960510 0.874848 1.018834 0.860267 0.936817 0.889429 0.816525
18 Slovenia SI Y_LT20 normalized 1.003521 1.119718 0.876761 0.950704 0.940141 0.802817 0.908451 0.887324 0.876761 0.813380
19 Greece EL Y_LT20 normalized 0.995420 1.070229 0.934351 0.874809 0.882443 0.786260 0.824427 0.758779 0.778626 0.801527
20 Switzerland CH Y_LT20 normalized 1.097222 0.932540 0.970238 1.000000 0.898810 0.974206 0.928571 1.013889 0.894841 0.791667
21 Poland PL Y_LT20 normalized 1.029240 0.976952 0.993808 0.976264 0.911249 0.826281 0.898865 0.883385 0.810802 0.740282
22 Italy IT Y_LT20 normalized 1.055676 0.974331 0.969993 0.977946 0.831164 0.781996 0.783080 0.734635 0.760304 0.732104
23 Belgium BE Y_LT20 normalized 1.011116 0.944420 1.044464 1.008448 0.975100 0.896398 0.897732 0.875056 0.716318 0.705647
24 Bulgaria BG Y_LT20 normalized 1.065617 0.965879 0.968504 0.952756 0.904199 0.759843 0.876640 0.748031 0.758530 0.691601
25 Croatia HR Y_LT20 normalized 1.070718 0.967956 0.961326 0.951381 0.891713 0.911602 0.855249 0.848619 0.828729 0.672928
26 Armenia AM Y_LT20 normalized 1.044905 1.079447 0.875648 0.782383 0.692573 2.015544 1.417962 0.958549 0.796200 0.624928
27 Malta MT Y_LT20 normalized 1.008000 1.056000 0.936000 0.792000 1.104000 0.720000 0.672000 0.720000 0.576000 0.600000
28 Romania RO Y_LT20 normalized 1.065895 0.971632 0.962473 0.873553 0.846076 0.781580 0.767078 0.730823 0.676250 0.593436
29 Latvia LV Y_LT20 normalized 1.005650 1.000000 0.994350 0.847458 0.847458 0.819209 0.598870 0.655367 0.632768 0.519774
30 Lithuania LT Y_LT20 normalized 1.185786 1.002494 0.811721 0.837905 0.759352 0.684539 0.658354 0.549875 0.620948 0.486284
31 Liechtenstein LI Y_LT20 normalized 1.285714 1.285714 0.428571 0.428571 0.000000 3.000000 0.857143 0.000000 2.142857 0.428571
32 Germany DE Y_LT20 normalized 0.983753 1.040361 0.975885 0.992277 0.965176 0.912502 0.927364 0.960367 0.951188 0.000000

Post HeatMaps Notes¶

  • More Deaths on the larger age groups

    • European countries have strongly recommended COVID-19 vaccination for older adults due to their increased risk of severe illness.
    • The European Centre for Disease Prevention and Control (ECDC) has emphasized the importance of vaccinating high-risk groups, including the elderly.
      • ecdc.europa.eu
  • Iceland and Netherlands Y20-39 agegroup

    • dispite being young this agegroup had a higher than usual death rate in 2022,2023,2024.
      • Possible reasons:
        • colder-climate?
          • but Finland, and Sweden are futher north than netherlands
        • vaccine hesitancy? - we will see the vaccination rate of all countries later in this document
        • Young people feeling compelled to be vaccinated due to needing a Covid/Corona Pass (or other name)
          • but many countries had these passes (see table below)
            • How were they enforced (in each country) ? subjective
            • Do contries have a nightlife or culture that compelled people?
Country Name Used For Active Period Notes
🇫🇷 France Pass Sanitaire / Passe Vaccinal Restaurants, cafés, cinemas, museums, transport, hospitals July 2021 – March 2022
🇮🇹 Italy Green Pass / Super Green Pass Workplaces, restaurants, domestic travel, gyms, theaters, stadiums June 2021 – April 2022
🇦🇹 Austria 3G/2G Rule Restaurants, hotels, salons, gyms, public transport Mid-2021 – March 2022
🇩🇪 Germany 3G/2G Rule Restaurants, events, shops, workplaces, inter-regional travel 2021 – March 2022 Varied by region
🇨🇭 Switzerland COVID Certificate Indoor dining, large events, cinemas, nightlife Sept 2021 – Feb 2022
🇳🇱 Netherlands CoronaToegangsbewijs Restaurants, bars, events, festivals, sports Sept 2021 – March 2022 Tests always accepted as alternative
🇧🇪 Belgium Covid Safe Ticket Hospitality venues, events, cultural spaces, gyms July 2021 – March 2022
🇸🇮 Slovenia PCT Certificate Public services, work, shops, cafes, public transport 2021 – Feb 2022
🇱🇹 Lithuania Opportunity Pass Supermarkets, shops, gyms, restaurants, some healthcare Mid-2021 – Feb 2022 One of the most strict implementations
🇱🇻 Latvia COVID-19 Certificate Workplaces, shops, services, restaurants, events 2021 – Feb 2022
🇱🇺 Luxembourg CovidCheck Workplaces, bars, restaurants, events 2021 – Feb 2022 Optional per employer
🇨🇿 Czech Republic O-N-T System Restaurants, hotels, cultural events 2021 – Feb 2022
🇵🇱 Poland EU COVID Certificate Recommended for travel, limited venue use — No widespread domestic mandate
🇵🇹 Portugal Digital COVID Certificate Hotels, restaurants (high-risk), events, air travel Mid-2021 – Early 2022
🇪🇸 Spain EU Digital COVID Certificate Regional use, nightlife, restaurants, hospitals — Highly decentralized use
🇮🇸 Iceland COVID-19 Certificate International travel, some large events — Never broadly required, all restrictions lifted Feb 2022
🇩🇰 Denmark Coronapas Restaurants, gyms, salons April 2021 – Sept 2021 First to implement and one of the first to end it
🇸🇪 Sweden COVID Certificate Only large indoor events (>100 people) — Never used for shops or restaurants, mostly optional
🇫🇮 Finland COVID Passport Events, hospitality — Regional use only, phased out early 2022
In [31]:
display(MD('### HeatMap (of deaths and vaccines)'))

temp = cd[(cd['source']=='deaths') & (cd['filter']=='TOTAL') & (cd['value_type']=='normalized')]

temp = pd.pivot_table(
    data = temp,
    values = 'value',
    index = ['abbr','name','filter','value_type'],
    columns=['year'],
    aggfunc='mean',
)
temp.columns.name = 'index' 
temp = temp.reset_index()

temp = temp.set_index('name').reindex(sppd['name']).reset_index()
temp['average(2022-2024)'] = (temp[2022]+temp[2023]+ temp[2024])/3.0
temp = temp.sort_values(by='average(2022-2024)',ascending=False)

## vaccines in 2023
v2023 = cd[(cd['source']=='vaccine') & (cd['filter']=='All') & (cd['value_type']=='ratio (total_dose/pop.)') & (cd['year'] == 2023)]
v2023 = v2023[['name','source','filter','value_type','value']]

temp = pd.merge(temp,v2023, how='left',on='name')

years = [y for y in range(2015,2025,1)]

styled_df = temp.style.background_gradient(cmap=heatmapCM1, axis=1, subset=years) \
                      .background_gradient(cmap=heatmapCM2, axis=0, subset=['average(2022-2024)']) \
                      .background_gradient(cmap=heatmapCM3, axis=0, subset=['value'])

display(MD('* 2015-2024 are the deaths for those years'))
display(MD('* average(2022-2024) is how the table is sorted'))
display(MD('* value is the total_doses/pop. for 2023'))

display(styled_df)

display(MD('### Lets sort by the vaccines '))

temp = temp.sort_values(by='value',ascending=False)

styled_df = temp.style.background_gradient(cmap=heatmapCM1, axis=1, subset=years) \
                      .background_gradient(cmap=heatmapCM2, axis=0, subset=['average(2022-2024)']) \
                      .background_gradient(cmap=heatmapCM3, axis=0, subset=['value'])

display(styled_df)


dxv = temp.copy()

HeatMap (of deaths and vaccines)¶

  • 2015-2024 are the deaths for those years
  • average(2022-2024) is how the table is sorted
  • value is the total_doses/pop. for 2023
  name abbr filter_x value_type_x 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 average(2022-2024) source filter_y value_type_y value
0 Malta MT TOTAL normalized 1.016949 0.955701 1.027350 1.060863 1.064330 1.199538 1.196071 1.219183 1.161980 1.183648 1.188270 vaccine All ratio (total_dose/pop.) 4.872870
1 Cyprus CY TOTAL normalized 1.029186 0.937156 1.033658 0.997362 1.069610 1.143922 1.241800 1.239908 1.150459 1.124312 1.171560 vaccine All ratio (total_dose/pop.) 4.173517
2 Iceland IS TOTAL normalized 0.988146 1.020151 0.991702 1.000148 1.005927 1.042377 1.039265 1.195733 1.140169 1.153060 1.162987 vaccine All ratio (total_dose/pop.) 4.790077
3 Netherlands NL TOTAL normalized 1.003373 0.993167 1.003460 1.024649 1.015107 1.147749 1.140424 1.133556 1.131250 1.143136 1.135981 vaccine All ratio (total_dose/pop.) 4.448430
4 Finland FI TOTAL normalized 0.996378 1.003504 1.000118 1.016952 1.004682 1.051873 1.076956 1.155757 1.143393 1.078209 1.125786 vaccine All ratio (total_dose/pop.) 14.897412
5 Germany DE TOTAL normalized 1.016481 0.979311 1.004209 1.029001 1.012227 1.082065 1.101127 1.149954 1.106922 1.079127 1.112001 vaccine All ratio (total_dose/pop.) 4.547240
6 Austria AT TOTAL normalized 1.023795 0.972870 1.003336 1.012615 1.006371 1.125312 1.104853 1.130013 1.081778 1.067871 1.093221 vaccine All ratio (total_dose/pop.) 4.559281
7 Denmark DK TOTAL normalized 1.007454 0.991352 1.001194 1.038393 1.014429 1.045972 1.075440 1.117541 1.090769 1.064901 1.091070 vaccine All ratio (total_dose/pop.) 5.147361
8 Portugal PT TOTAL normalized 1.006119 1.000327 0.993554 1.024547 1.013474 1.140328 1.128946 1.127418 1.071651 1.067896 1.088988 vaccine All ratio (total_dose/pop.) 8.030406
9 Luxembourg LU TOTAL normalized 0.992076 0.966098 1.041827 1.053835 1.050895 1.143779 1.100400 1.089127 1.081529 1.095744 1.088800 vaccine All ratio (total_dose/pop.) 4.084914
10 Norway NO TOTAL normalized 1.016140 0.989495 0.994364 0.996615 0.991477 1.008311 1.026049 1.115550 1.065612 1.072463 1.084542 vaccine All ratio (total_dose/pop.) 4.657366
11 Slovenia SI TOTAL normalized 1.005897 0.975647 1.018456 1.018057 1.023988 1.216257 1.150672 1.118378 1.070087 1.061216 1.083227 vaccine All ratio (total_dose/pop.) 2.835063
12 France FR TOTAL normalized 1.007603 0.985137 1.007261 1.013398 1.019252 1.131754 1.099201 1.122302 1.061615 1.062469 1.082129 vaccine All ratio (total_dose/pop.) 9.311581
13 Greece EL TOTAL normalized 1.012210 0.969465 1.018325 0.984534 1.022175 1.091374 1.179188 1.151479 1.047889 1.026689 1.075352 vaccine All ratio (total_dose/pop.) 6.445362
14 Switzerland CH TOTAL normalized 1.031079 0.969066 0.999855 1.002628 1.012027 1.137130 1.058255 1.110659 1.069182 1.037839 1.072560 nan nan nan nan
15 Liechtenstein LI TOTAL normalized 0.997423 1.043814 0.958763 1.055412 1.005155 1.256443 1.032216 1.078608 1.020619 1.117268 1.072165 vaccine All ratio (total_dose/pop.) 3.724585
16 Spain ES TOTAL normalized 1.023104 0.971158 1.005738 1.013880 0.992168 1.192895 1.070740 1.101128 1.039692 1.042102 1.060974 vaccine All ratio (total_dose/pop.) 4.926581
17 Estonia EE TOTAL normalized 1.003717 0.992890 1.003393 1.016879 0.994057 1.041062 1.194009 1.115234 1.034320 1.030883 1.060146 vaccine All ratio (total_dose/pop.) 3.277817
18 Poland PL TOTAL normalized 1.011934 0.974416 1.013649 1.035756 1.026469 1.222837 1.306178 1.125759 1.027167 1.015246 1.056057 vaccine All ratio (total_dose/pop.) 6.050301
19 Slovakia SK TOTAL normalized 1.023092 0.973345 1.003563 1.011692 0.992593 1.126210 1.363524 1.109279 1.008254 0.995303 1.037612 vaccine All ratio (total_dose/pop.) 2.608904
20 Czechia CZ TOTAL normalized 1.024453 0.970711 1.004837 1.019293 1.014188 1.190285 1.259588 1.084875 1.016894 1.003669 1.035146 vaccine All ratio (total_dose/pop.) 3.676542
21 Italy IT TOTAL normalized 1.028396 0.960289 1.011315 0.983592 0.989873 1.165225 1.087305 1.095037 1.013642 0.986208 1.031629 vaccine All ratio (total_dose/pop.) 7.442137
22 Belgium BE TOTAL normalized 1.024324 0.979883 0.995793 1.005480 0.988120 1.170333 1.020196 1.058305 1.012988 1.015740 1.029011 vaccine All ratio (total_dose/pop.) 5.129494
23 Montenegro ME TOTAL normalized 0.999019 0.994684 1.006297 1.003200 1.018684 1.138065 1.411355 1.088052 0.977652 0.974413 1.013372 nan nan nan nan
24 Hungary HU TOTAL normalized 1.026484 0.967604 1.005912 1.000787 0.990451 1.097414 1.187944 1.041669 0.978737 0.968079 0.996162 vaccine All ratio (total_dose/pop.) 3.404480
25 Sweden SE TOTAL normalized 1.019326 0.985579 0.995095 0.995218 0.956506 1.079097 0.985779 1.011546 1.005714 0.969874 0.995711 vaccine All ratio (total_dose/pop.) 6.589887
26 Croatia HR TOTAL normalized 1.036057 0.963041 1.000902 0.987618 0.969749 1.088706 1.174273 1.066778 0.959584 0.946901 0.991087 vaccine All ratio (total_dose/pop.) 2.854150
27 Latvia LV TOTAL normalized 1.009782 0.991345 0.998873 1.001801 0.963078 1.022469 1.201443 1.055301 0.962590 0.912575 0.976822 vaccine All ratio (total_dose/pop.) 3.267880
28 Bulgaria BG TOTAL normalized 1.024011 0.977541 0.998447 0.988264 0.984702 1.150005 1.357649 1.080035 0.919335 0.911709 0.970360 vaccine All ratio (total_dose/pop.) 1.370123
29 Lithuania LT TOTAL normalized 1.034162 0.993484 0.972354 0.959272 0.928441 1.077686 1.154059 1.030467 0.919153 0.914776 0.954799 vaccine All ratio (total_dose/pop.) 4.846135
30 Serbia RS TOTAL normalized 1.024670 0.974227 1.001103 0.980439 0.979254 1.155481 1.318381 1.013430 0.917367 0.925909 0.952236 nan nan nan nan
31 Romania RO TOTAL normalized 1.020584 0.981718 0.997698 1.005356 0.993947 1.151277 1.276275 1.026653 0.918109 0.837779 0.927514 vaccine All ratio (total_dose/pop.) 2.557969
32 Armenia AM TOTAL normalized 1.008985 1.007475 0.983540 0.920898 0.919641 1.278886 1.266846 0.964385 0.873495 0.916035 0.917971 nan nan nan nan

Lets sort by the vaccines¶

  name abbr filter_x value_type_x 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 average(2022-2024) source filter_y value_type_y value
4 Finland FI TOTAL normalized 0.996378 1.003504 1.000118 1.016952 1.004682 1.051873 1.076956 1.155757 1.143393 1.078209 1.125786 vaccine All ratio (total_dose/pop.) 14.897412
12 France FR TOTAL normalized 1.007603 0.985137 1.007261 1.013398 1.019252 1.131754 1.099201 1.122302 1.061615 1.062469 1.082129 vaccine All ratio (total_dose/pop.) 9.311581
8 Portugal PT TOTAL normalized 1.006119 1.000327 0.993554 1.024547 1.013474 1.140328 1.128946 1.127418 1.071651 1.067896 1.088988 vaccine All ratio (total_dose/pop.) 8.030406
21 Italy IT TOTAL normalized 1.028396 0.960289 1.011315 0.983592 0.989873 1.165225 1.087305 1.095037 1.013642 0.986208 1.031629 vaccine All ratio (total_dose/pop.) 7.442137
25 Sweden SE TOTAL normalized 1.019326 0.985579 0.995095 0.995218 0.956506 1.079097 0.985779 1.011546 1.005714 0.969874 0.995711 vaccine All ratio (total_dose/pop.) 6.589887
13 Greece EL TOTAL normalized 1.012210 0.969465 1.018325 0.984534 1.022175 1.091374 1.179188 1.151479 1.047889 1.026689 1.075352 vaccine All ratio (total_dose/pop.) 6.445362
18 Poland PL TOTAL normalized 1.011934 0.974416 1.013649 1.035756 1.026469 1.222837 1.306178 1.125759 1.027167 1.015246 1.056057 vaccine All ratio (total_dose/pop.) 6.050301
7 Denmark DK TOTAL normalized 1.007454 0.991352 1.001194 1.038393 1.014429 1.045972 1.075440 1.117541 1.090769 1.064901 1.091070 vaccine All ratio (total_dose/pop.) 5.147361
22 Belgium BE TOTAL normalized 1.024324 0.979883 0.995793 1.005480 0.988120 1.170333 1.020196 1.058305 1.012988 1.015740 1.029011 vaccine All ratio (total_dose/pop.) 5.129494
16 Spain ES TOTAL normalized 1.023104 0.971158 1.005738 1.013880 0.992168 1.192895 1.070740 1.101128 1.039692 1.042102 1.060974 vaccine All ratio (total_dose/pop.) 4.926581
0 Malta MT TOTAL normalized 1.016949 0.955701 1.027350 1.060863 1.064330 1.199538 1.196071 1.219183 1.161980 1.183648 1.188270 vaccine All ratio (total_dose/pop.) 4.872870
29 Lithuania LT TOTAL normalized 1.034162 0.993484 0.972354 0.959272 0.928441 1.077686 1.154059 1.030467 0.919153 0.914776 0.954799 vaccine All ratio (total_dose/pop.) 4.846135
2 Iceland IS TOTAL normalized 0.988146 1.020151 0.991702 1.000148 1.005927 1.042377 1.039265 1.195733 1.140169 1.153060 1.162987 vaccine All ratio (total_dose/pop.) 4.790077
10 Norway NO TOTAL normalized 1.016140 0.989495 0.994364 0.996615 0.991477 1.008311 1.026049 1.115550 1.065612 1.072463 1.084542 vaccine All ratio (total_dose/pop.) 4.657366
6 Austria AT TOTAL normalized 1.023795 0.972870 1.003336 1.012615 1.006371 1.125312 1.104853 1.130013 1.081778 1.067871 1.093221 vaccine All ratio (total_dose/pop.) 4.559281
5 Germany DE TOTAL normalized 1.016481 0.979311 1.004209 1.029001 1.012227 1.082065 1.101127 1.149954 1.106922 1.079127 1.112001 vaccine All ratio (total_dose/pop.) 4.547240
3 Netherlands NL TOTAL normalized 1.003373 0.993167 1.003460 1.024649 1.015107 1.147749 1.140424 1.133556 1.131250 1.143136 1.135981 vaccine All ratio (total_dose/pop.) 4.448430
1 Cyprus CY TOTAL normalized 1.029186 0.937156 1.033658 0.997362 1.069610 1.143922 1.241800 1.239908 1.150459 1.124312 1.171560 vaccine All ratio (total_dose/pop.) 4.173517
9 Luxembourg LU TOTAL normalized 0.992076 0.966098 1.041827 1.053835 1.050895 1.143779 1.100400 1.089127 1.081529 1.095744 1.088800 vaccine All ratio (total_dose/pop.) 4.084914
15 Liechtenstein LI TOTAL normalized 0.997423 1.043814 0.958763 1.055412 1.005155 1.256443 1.032216 1.078608 1.020619 1.117268 1.072165 vaccine All ratio (total_dose/pop.) 3.724585
20 Czechia CZ TOTAL normalized 1.024453 0.970711 1.004837 1.019293 1.014188 1.190285 1.259588 1.084875 1.016894 1.003669 1.035146 vaccine All ratio (total_dose/pop.) 3.676542
24 Hungary HU TOTAL normalized 1.026484 0.967604 1.005912 1.000787 0.990451 1.097414 1.187944 1.041669 0.978737 0.968079 0.996162 vaccine All ratio (total_dose/pop.) 3.404480
17 Estonia EE TOTAL normalized 1.003717 0.992890 1.003393 1.016879 0.994057 1.041062 1.194009 1.115234 1.034320 1.030883 1.060146 vaccine All ratio (total_dose/pop.) 3.277817
27 Latvia LV TOTAL normalized 1.009782 0.991345 0.998873 1.001801 0.963078 1.022469 1.201443 1.055301 0.962590 0.912575 0.976822 vaccine All ratio (total_dose/pop.) 3.267880
26 Croatia HR TOTAL normalized 1.036057 0.963041 1.000902 0.987618 0.969749 1.088706 1.174273 1.066778 0.959584 0.946901 0.991087 vaccine All ratio (total_dose/pop.) 2.854150
11 Slovenia SI TOTAL normalized 1.005897 0.975647 1.018456 1.018057 1.023988 1.216257 1.150672 1.118378 1.070087 1.061216 1.083227 vaccine All ratio (total_dose/pop.) 2.835063
19 Slovakia SK TOTAL normalized 1.023092 0.973345 1.003563 1.011692 0.992593 1.126210 1.363524 1.109279 1.008254 0.995303 1.037612 vaccine All ratio (total_dose/pop.) 2.608904
31 Romania RO TOTAL normalized 1.020584 0.981718 0.997698 1.005356 0.993947 1.151277 1.276275 1.026653 0.918109 0.837779 0.927514 vaccine All ratio (total_dose/pop.) 2.557969
28 Bulgaria BG TOTAL normalized 1.024011 0.977541 0.998447 0.988264 0.984702 1.150005 1.357649 1.080035 0.919335 0.911709 0.970360 vaccine All ratio (total_dose/pop.) 1.370123
14 Switzerland CH TOTAL normalized 1.031079 0.969066 0.999855 1.002628 1.012027 1.137130 1.058255 1.110659 1.069182 1.037839 1.072560 nan nan nan nan
23 Montenegro ME TOTAL normalized 0.999019 0.994684 1.006297 1.003200 1.018684 1.138065 1.411355 1.088052 0.977652 0.974413 1.013372 nan nan nan nan
30 Serbia RS TOTAL normalized 1.024670 0.974227 1.001103 0.980439 0.979254 1.155481 1.318381 1.013430 0.917367 0.925909 0.952236 nan nan nan nan
32 Armenia AM TOTAL normalized 1.008985 1.007475 0.983540 0.920898 0.919641 1.278886 1.266846 0.964385 0.873495 0.916035 0.917971 nan nan nan nan
In [32]:
# deaths values with out the NA
d = dxv.copy().dropna(subset=['value'])
d = d.sort_values(by='average(2022-2024)',ascending=True)
d = d.reset_index()

# vaccines values with out the NA
v = dxv.copy().dropna(subset=['value'])
v = v.sort_values(by='value',ascending=True)
v = v.reset_index()
v['rank'] = v['value'].rank()

# making sure the lists have the same values
d = d[d.abbr.isin(v.abbr)]
d = d.reset_index(drop=True)

# display(d)
# display(v)

# Create a plot
fig, ax = plt.subplots(figsize=(14, 7))

ydistance = 0.95

# Plot points for the first dataframe
for i, row in d.iterrows():
    ax.scatter(0, i * ydistance, label=row['name'], color='blue')
    ax.text(-0.025, i * ydistance, row['name'] + ': ' + f"{row['average(2022-2024)']:.2f}", ha='right', va='center', color='blue')

# Plot points for the second dataframe
for i, row in v.iterrows():
    ax.scatter(1, i * ydistance, label=row['name'], color='red')
    ax.text(1.025, i * ydistance, row['name'] + ': ' + f"{row['value']:.2f}", ha='left', va='center', color='red')


ax.text(-0.025 - 1.0, len(v) * ydistance, 'most deaths')
ax.text(-0.025 - 1.0, 0 * ydistance, 'least deaths')

ax.text(1.025 + 1.0, len(v) * ydistance, 'most vaccines')
ax.text(1.025 + 1.0, 0 * ydistance, 'least vaccines')

# Create a colormap
colormap = plt.get_cmap('magma')
norm = Normalize(vmin=-np.pi, vmax=np.pi)

# Draw lines connecting matching abbr values
for name in d['name']:
    if name in v['name'].values:
        idx1 = d[d['name'] == name].index[0] * ydistance
        idx2 = v[v['name'] == name].index[0] * ydistance
        ax.plot([0, 1], [idx1, idx2], color='gray', linestyle='-')
        vertical_diff = idx2 - idx1
        horizontal_diff = 1  # The horizontal distance between the columns
        angle = np.arctan2(vertical_diff, horizontal_diff)  # Calculate the angle

        # normalized_angle = (angle + 2 * np.pi) / (2 * np.pi )  # Normalize angle to [0, 1]
        normalized_angle = pow ( abs(angle / np.pi)/0.5, 3) # custom normalized angle for better colors
        # print(normalized_angle)

        color = colormap(normalized_angle)  # Map normalized angle to a color
        ax.plot([0, 1], [idx1, idx2], color=color, linestyle='-')

# Formatting
ax.set_xlim(-0.5, 1.5)
ax.set_ylim(-1, max(len(d), len(v)))
ax.set_xticks([0, 1])
ax.set_xticklabels(['deaths average(2022-2024)', 'vaccines ratio (total_dose/pop.)'])
ax.set_yticks([])
ax.set_title('Mapping Between deaths and vaccines\n High values at the top, Low values at the bottom')
ax.grid(False)
plt.tight_layout()
plt.show()
No description has been provided for this image

Spearman and Kendall¶

In [33]:
# create a ranked list for deaths - average(2022-2024)
d = dxv.copy().reset_index(drop=True)
d = d.sort_values(by='average(2022-2024)',ascending=False) #most deaths to least deaths
d = d[['name','abbr','average(2022-2024)']]
d['rank'] = d['average(2022-2024)'].rank()

# create a ranked list for vaccines - ratio (total_dose/pop.)
v = dxv.copy().reset_index(drop=True)
v = v.sort_values(by='value',ascending=True) #least vaccine to most vaccines
v = v[['name','abbr','value']]
v['rank'] = v['value'].rank()

# make sure the have the same countries
d = d[d.abbr.isin(v.abbr)]

for i, row in v.iterrows():
    d.loc[d['abbr']==row['abbr'], 'rank'] = row['rank']

# no NAN values
d = d[~d['rank'].isna()]
v = v[~v['rank'].isna()]

display(MD(
'''### Output Interpretation

| Value     | Effect                      | Description/Correlation-Suggestion                         |
|-----------|-----------------------------|------------------------------------------------------------|
| **1.0**   | Positive effect             | Suggests more vaccines will lead to fewer deaths.          |
| **0.5**   | Slightly positive effect    | Slightly suggests more vaccines will lead to fewer deaths. |
| **0.0**   | Null/No effect              | Vaccines do not change the number of deaths.               |
| **-0.5**  | Slightly negative effect    | Slightly suggests more vaccines will lead to more deaths.  |
| **-1.0**  | Negative effect             | Suggests more vaccines will lead to more deaths.           |

'''
))




# Calculate Spearman's Rank Correlation
spearman_corr, _ = spearmanr(d['rank'], v['rank'])
display(MD(f"### Spearman's Rank Correlation: {spearman_corr}"))

display(bar(((spearman_corr+1.0)/2.0)*100,length=100))
display('-1'+' '*48 + '0' + ' '*50 + '1')

# Calculate Kendall's Tau
kendall_corr, _ = kendalltau(d['rank'], v['rank'])
display(MD(f"### Kendall's Tau: {kendall_corr}"))

display(bar(((kendall_corr+1.0)/2.0)*100,length=100))
display('-1'+' '*48 + '0' + ' '*50 + '1')

# display(d)
# display(v)

Output Interpretation¶

Value Effect Description/Correlation-Suggestion
1.0 Positive effect Suggests more vaccines will lead to fewer deaths.
0.5 Slightly positive effect Slightly suggests more vaccines will lead to fewer deaths.
0.0 Null/No effect Vaccines do not change the number of deaths.
-0.5 Slightly negative effect Slightly suggests more vaccines will lead to more deaths.
-1.0 Negative effect Suggests more vaccines will lead to more deaths.

Spearman's Rank Correlation: -0.33990147783251223¶

'[#################################___________________________________________________________________]'
'-1                                                0                                                  1'

Kendall's Tau: -0.24630541871921177¶

'[#####################################_______________________________________________________________]'
'-1                                                0                                                  1'

Other death x vaccine charts¶

In [34]:
temp = dxv[dxv.value < 14] #gets rid of the outliar (finland)
temp = temp.dropna(subset=['value'])


    # kde 
g = sns.jointplot(
    data=temp,
    x="value", 
    y="average(2022-2024)", 
    kind="kde",
    fill=True,
    cmap=heatmapCM
)

# Add scatter points on top
g.ax_joint.scatter(
    temp["value"], 
    temp['average(2022-2024)'], 
    color="black", 
    alpha=0.7, 
    s=7
)


g.set_axis_labels( "Vaccines (ratio (total_dose/pop.))","Deaths (average(2022-2024))")

g.figure.suptitle("Kde Plot : Death x Vaccines", fontsize=14)

# Add a title
plt.title("<-- hypothetical 0 vaccines", fontsize=10,x=0.34,y=0.25)

# Add vertical and horizontal lines
plt.axvline(x=0.0, color='black', linestyle='--', linewidth=1)  # Vertical line at x=20
plt.axhline(y=1.0, color='black', linestyle='--', linewidth=1)  # Horizontal line at y=3

# display(vdravg)
plt.show()
No description has been provided for this image
In [35]:
title = 'Scatter Chart - Death x Vaccine'
display(MD(f'### {title}'))

fig = px.scatter(
        dxv,
        x="value",      
        y="average(2022-2024)",       
        color="name",      
        hover_name="name",
        title=title,
        labels={
            "value": "Vaccines (ratio total_dose/pop.)",  # Custom X-axis label
            "average(2022-2024)": "Deaths average(2022-2024)"           # Custom Y-axis label
        },
        height=750
    )
fig.update_layout(template="plotly_dark")

fig.add_shape(
    type="line",
    x0=0, x1=dxv.value.max(),
    y0=1, y1=1, # Start and end y-coordinates
    line=dict(color="Red", width=2, dash="dash"),  # Line style
    xref="x", yref="y"          # Reference axes
)


fig.show()

Scatter Chart - Death x Vaccine¶

Bad-Batch Theory¶

There seems to be to be an unusual grouping/cluster¶

Where countries that have a vaccine (ratio total_dose/pop.) between 4.0-6.0, have an unusually high Deaths average(2022-2024) above 1.1.

Bad-Batch Theory (by Dr Vibeke Manniche)¶

A study in European Journal of Clinical Investigation found significant batch-dependent variations in adverse event reports for the Pfizer-BioNTech COVID-19 vaccine in Denmark (2020–2022),
suggesting some batches had higher reported risks. Further investigation is needed.

  • The Paper

    • Batch-dependent safety of the BNT162b2 mRNA COVID-19 vaccine - by Dr Vibeke Manniche
  • An Interview

    • Excess deaths, the silence - Dr John Campbell and Dr Vibeke Manniche (Youtube)
  • .

  • .

  • .

  • .

my 2 cents¶

This is not suprising, the vaccine was created in a rushed manner ... and as a rule of thumb, Haste Makes Waste

  • Ford Pinto (1971-1980)
  • Windows Vista
  • Samsung Galaxy Note 7
  • Boeing 737 MAX
  • ... and so many more

Lets look at some of the Causes of Death¶

note:
this data only does to 2023-ish.
with this limited amount of post-pandemic data
... it will be difficult to draw any meaningful conclusions.

In [36]:
title = 'Line Chart - normalized causes of death in Europe (by year)'
display(MD(f'### {title}'))

temp = cd[(cd['source']=='cause_of_death') & (~(cd['filter']=='TOTAL')) & (cd['value_type']=='normalized')]

temp = pd.pivot_table(
        data = temp,
        values = 'value',
        index = ['filter'],
        columns=['year'],
        aggfunc='mean',
    )
temp = temp.reset_index()

# temp['average(2021-2022)'] = (temp[2021]+temp[2022])/2.0
years = [i for i in range(2015,2023)]

# temp['stdev'] = temp[[2020,2021,2022]].std(axis=1)
# temp = temp.sort_values(by='stdev', ascending=False)

temp = temp.sort_values(by=2022, ascending=False)
display(temp.style.background_gradient(cmap=heatmapCM,axis=1,subset=years))

Line Chart - normalized causes of death in Europe (by year)¶

year filter 2015.000000 2016.000000 2017.000000 2018.000000 2019.000000 2020.000000 2021.000000 2022.000000 2023.000000
7 Diseases of the skin and subcutaneous tissue (L00-L99) 0.952700 0.988986 1.058314 1.075503 1.193232 1.258299 1.297455 1.591110 0.319839
12 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 0.995540 0.984867 1.019594 1.057114 1.219432 1.518470 1.339570 1.476779 0.290196
10 Mental and behavioural disorders (F00-F99) 0.931040 0.976116 1.092844 1.178312 1.225431 1.289635 1.347351 1.396606 0.221782
8 Endocrine, nutritional and metabolic diseases (E00-E90) 0.973747 0.979490 1.046763 1.070362 1.107944 1.249651 1.314197 1.272323 0.225376
4 Diseases of the genitourinary system (N00-N99) 0.992709 0.980498 1.026793 1.055125 1.045159 1.131820 1.178126 1.237250 0.273888
5 Diseases of the musculoskeletal system and connective tissue (M00-M99) 0.995449 0.958319 1.046231 1.105399 1.118685 1.068406 1.097093 1.139465 0.204976
3 Diseases of the digestive system (K00-K93) 0.988721 0.996419 1.014860 1.013569 1.038691 1.060206 1.109400 1.122434 0.222949
6 Diseases of the respiratory system (J00-J99) 0.991490 0.960160 1.048350 1.064795 1.023761 0.980327 0.985675 1.059276 0.222002
9 Malignant neoplasms (C00-C97) 0.994287 1.002868 1.002845 1.009227 1.008936 1.008924 0.992634 0.995533 0.196705
2 Diseases of the circulatory system (I00-I99) 1.021408 0.986229 0.992363 0.971170 0.947074 0.966720 0.980255 0.969827 0.181271
1 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 0.964858 1.030858 1.004284 1.007788 1.009398 0.988465 0.957862 0.950077 0.179165
11 Pregnancy, childbirth and the puerperium (O00-O99) 0.921207 1.079135 0.999658 0.881887 0.953946 0.962505 1.116414 0.928818 0.202308
0 Certain conditions originating in the perinatal period (P00-P96) 0.987427 1.015856 0.996718 0.953695 0.955849 0.880505 0.889766 0.851655 0.183221

Hypothesizing Adverse Reactions from an mRNA Vaccine¶

  1. Blood Issues

    • Since the vaccine is injected into the body, potential blood-related adverse reactions should be considered.
  2. Heart Issues

    • Based on reports and concerns about myocarditis and pericarditis.
  3. DNA / Cancer Concerns (AKA Neoplasm)

    • Innate immune suppression by SARS-CoV-2 mRNA vaccinations: The role of G-quadruplexes, exosomes, and MicroRNAs

      • A study suggests mRNA vaccines may suppress innate immunity by affecting type I interferon signaling, potentially increasing the risk of neurodegenerative diseases, myocarditis, immune disorders, and cancer.
        • Source: Innate immune suppression by SARS-CoV-2 mRNA vaccinations: The role of G-quadruplexes, exosomes, and MicroRNAs
        • From: National Library of Medicine
        • Authors: Stephanie Seneff, Greg Nigh, Anthony M. Kyriakopoulos, Peter A. McCullough
    • B-cell lymphoblastic lymphoma following intravenous BNT162b2 mRNA booster in a BALB/c mouse: A case report

      • A research group reported the sudden death of a mouse after its second Pfizer/BioNTech mRNA vaccine dose, which was found to have B-cell lymphoblastic lymphoma (fast-growing blood cancer).
        • Source: B-cell lymphoblastic lymphoma following intravenous BNT162b2 mRNA booster in a BALB/c mouse: A case report
        • From: frontiersin.org
        • Authors: Sander Eens, Manon Van Hecke , Kasper Favere , Thomas Tousseyn, Pieter-Jan Guns, Tania Roskams, Hein Heidbuchel
        • note: this has an addendum

          • "In conclusion, the novel COVID-19 vaccines have demonstrated an exceptional benefit-risk ratio in the fight against the pandemic and manifestations of severe adverse reactions following COVID-19 vaccination are rare."
            • however - the benefit-risk ratio value was not given.
    • DNA fragments detected in monovalent and bivalent 1Pfizer/BioNTech and Moderna modRNA COVID-19 vaccines 2from Ontario, Canada: Exploratory doseresponse 3relationship with serious adverse events.

      • These data demonstrate the presence of billions to hundreds of billions of DNA 537molecules per dosein the modRNA COVID-19 products tested.
        • Source: DNA fragments detected in monovalent and bivalent 1Pfizer/BioNTech and Moderna modRNA COVID-19 vaccines 2from Ontario, Canada: Exploratory doseresponse 3relationship with serious adverse events.
        • Authors: David J. Speicher, Jessica Rose,L. Maria Gutschi,David Wiseman, Kevin McKernan
    • COVID-19 Vaccines in People with Cancer

      • "There are some other types of vaccines that might not be safe for some people with cancer, but this depends on many factors, such as the type of vaccine, the type of cancer a person has (had), if they're still being treated for cancer, and if their immune system is working properly. Because of this, it’s best to talk with your doctor before getting any type of vaccine."
        • Source: COVID-19 Vaccines in People with Cancer
        • From: cancer.org
  4. Unknown Issues

    • As a new medication, unforeseen adverse reactions may arise.

Spearman and Kendall ... (again)¶

In [37]:
# create a ranked list for vaccines - ratio (total_dose/pop.)

v = dxv.copy().reset_index(drop=True)
v = v.rename(columns={'value': 'vaccines | ratio (total_dose/pop.)'})
v = v[~v['vaccines | ratio (total_dose/pop.)'].isna()]
v = v.sort_values(by='vaccines | ratio (total_dose/pop.)',ascending=True) #least vaccine to most vaccines
v = v[['name','abbr','vaccines | ratio (total_dose/pop.)']]
v['rank'] = v['vaccines | ratio (total_dose/pop.)'].rank()
# display(v)

cods = cd[(cd.source == 'cause_of_death') & (cd.value_type == 'normalized') & (cd['year'] == 2022) & (~cd.value.isna()) & (~(cd['filter'] == 'Total')) ]['filter'].drop_duplicates().to_list()


result = []
for c in cods:
    # print(c)

    temp = pd.pivot_table(
        data = cd[(cd['filter'] == c) & (cd.value_type == 'normalized') & (cd['year'] == 2022)],
        values = 'value',
        index = ['name','abbr'],
        columns=['year'],
        aggfunc='mean',
    )
    temp = temp.reset_index()

    temp = temp.sort_values(by=2022,ascending=False) #most deaths to least deaths
    temp['rank'] = temp[2022].rank()
    # display(temp)

    temp = temp[temp.abbr.isin(v.abbr)]
    vtemp = v[v.abbr.isin(temp.abbr)]

    for i, row in vtemp.iterrows():
        temp.loc[temp['abbr']==row['abbr'], 'rank'] = row['rank']

    result.append(
        {
            'cause_of_death': c,
            'Spearman_Rank': spearmanr(temp['rank'], vtemp['rank'])[0],
            'Kendall_Tau': kendalltau(temp['rank'], vtemp['rank'])[0]
        }
    )

    # display(temp)
    # display(vtemp)

    # display(MD(f"## {c} x Vaccines"))
    # # Calculate Spearman's Rank Correlation
    # spearman_corr, _ = spearmanr(temp['rank'], vtemp['rank'])
    # display(MD(f"### Spearman's Rank Correlation: {spearman_corr}"))

    # display(bar(((spearman_corr+1.0)/2.0)*100,length=100))
    # display('-1'+' '*48 + '0' + ' '*50 + '1')

    # # Calculate Kendall's Tau
    # kendall_corr, _ = kendalltau(temp['rank'], v['rank'])
    # display(MD(f"### Kendall's Tau: {kendall_corr}"))

    # display( bar(((kendall_corr+1.0)/2.0)*100,length=100))
    # display('-1'+' '*48 + '0' + ' '*50 + '1')

display(MD(
'''### Output Interpretation

| Value     | Effect                      | Description/Correlation-Suggestion                                   |
|-----------|-----------------------------|----------------------------------------------------------------------|
| **1.0**   | Positive effect             | Suggests more vaccines will lead to fewer [cause of death].          |
| **0.5**   | Slightly positive effect    | Slightly suggests more vaccines will lead to fewer [cause of death]. |
| **0.0**   | Null/No effect              | Vaccines do not change the number of [cause of death].               |
| **-0.5**  | Slightly negative effect    | Slightly suggests more vaccines will lead to more [cause of death].  |
| **-1.0**  | Negative effect             | Suggests more vaccines will lead to more [cause of death].           |

'''
))

result = pd.DataFrame(result)
result = result.sort_values(by='Spearman_Rank')
result = result.reset_index(drop=True)

display(MD("#### lets point out how many causes of death's increased with the number of vaccines"))
display(MD(f"* {len(result[result['Spearman_Rank'] <= -0.3])} with a Spearman_Rank less than -0.3"))
display(MD(f"* {len(result[result['Spearman_Rank'] >= 0.3])} with a Spearman_Rank greater than 0.3"))

display(result.style.background_gradient(cmap=heatmapCM4)) #,vmax=1.0,vmin=-1.0))

# lets dataframe the top and bottom causes of death
TB_cod = pd.concat([result[result['Spearman_Rank'] <= -0.3],result[result['Spearman_Rank'] >= 0.3]])

Output Interpretation¶

Value Effect Description/Correlation-Suggestion
1.0 Positive effect Suggests more vaccines will lead to fewer [cause of death].
0.5 Slightly positive effect Slightly suggests more vaccines will lead to fewer [cause of death].
0.0 Null/No effect Vaccines do not change the number of [cause of death].
-0.5 Slightly negative effect Slightly suggests more vaccines will lead to more [cause of death].
-1.0 Negative effect Suggests more vaccines will lead to more [cause of death].

lets point out how many causes of death's increased with the number of vaccines¶

  • 2 with a Spearman_Rank less than -0.3
  • 1 with a Spearman_Rank greater than 0.3
  cause_of_death Spearman_Rank Kendall_Tau
0 Malignant neoplasms (C00-C97) -0.459223 -0.317460
1 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) -0.435140 -0.312169
2 Pregnancy, childbirth and the puerperium (O00-O99) -0.200870 -0.166667
3 Diseases of the genitourinary system (N00-N99) -0.160920 -0.079365
4 Mental and behavioural disorders (F00-F99) -0.149973 -0.089947
5 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) -0.110016 -0.052910
6 Diseases of the musculoskeletal system and connective tissue (M00-M99) -0.110016 -0.068783
7 Diseases of the skin and subcutaneous tissue (L00-L99) -0.085933 -0.047619
8 Endocrine, nutritional and metabolic diseases (E00-E90) -0.032841 -0.010582
9 Diseases of the digestive system (K00-K93) -0.007663 0.000000
10 Certain conditions originating in the perinatal period (P00-P96) 0.046524 0.047619
11 Diseases of the circulatory system (I00-I99) 0.156541 0.089947
12 Diseases of the respiratory system (J00-J99) 0.306513 0.211640

Let's see the Spearman's Rank over time¶

In [38]:
# create a ranked list for vaccines - ratio (total_dose/pop.)

v = dxv.copy().reset_index(drop=True)
v = v.rename(columns={'value': 'vaccines | ratio (total_dose/pop.)'})
v = v[~v['vaccines | ratio (total_dose/pop.)'].isna()]
v = v.sort_values(by='vaccines | ratio (total_dose/pop.)',ascending=True) #least vaccine to most vaccines
v = v[['name','abbr','vaccines | ratio (total_dose/pop.)']]
v['rank'] = v['vaccines | ratio (total_dose/pop.)'].rank()
# display(v)

cods = cd[(cd.source == 'cause_of_death') & (cd.value_type == 'normalized') & (cd['year'] == 2022) & (~cd.value.isna()) & (~(cd['filter'] == 'Total')) ]['filter'].drop_duplicates().to_list()

years = [i for i in range(2015,2023,1)]

result = []
for c in cods:
    
    for y in years:

        temp = pd.pivot_table(
            data = cd[(cd['filter'] == c) & (cd.value_type == 'normalized') & (cd['year'] == y)],
            values = 'value',
            index = ['name','abbr'],
            columns=['year'],
            aggfunc='mean',
        )
        temp = temp.reset_index()

        temp = temp.sort_values(by=y,ascending=False) #most deaths to least deaths
        temp['rank'] = temp[y].rank()
        # display(temp)

        temp = temp[temp.abbr.isin(v.abbr)]
        vtemp = v[v.abbr.isin(temp.abbr)]

        for i, row in vtemp.iterrows():
            temp.loc[temp['abbr']==row['abbr'], 'rank'] = row['rank']

        result.append(
            {
                'cause_of_death': c,
                'year': y,
                'Spearman_Rank': spearmanr(temp['rank'], vtemp['rank'])[0],
                'Kendall_Tau': kendalltau(temp['rank'], vtemp['rank'])[0]
            }
        )

display(MD(
'''### Output Interpretation

| Value     | Effect                      | Description/Correlation-Suggestion                                   |
|-----------|-----------------------------|----------------------------------------------------------------------|
| **1.0**   | Positive effect             | Suggests more vaccines will lead to fewer [cause of death].          |
| **0.5**   | Slightly positive effect    | Slightly suggests more vaccines will lead to fewer [cause of death]. |
| **0.0**   | Null/No effect              | Vaccines do not change the number of [cause of death].               |
| **-0.5**  | Slightly negative effect    | Slightly suggests more vaccines will lead to more [cause of death].  |
| **-1.0**  | Negative effect             | Suggests more vaccines will lead to more [cause of death].           |

'''
))

result = pd.DataFrame(result)
result = result.sort_values(by='Spearman_Rank')
result = result.reset_index(drop=True)

display(MD("#### lets point out how many causes of death's increased with the number of vaccines"))
display(MD(f"* {len(result[result['Spearman_Rank'] <= -0.3])} with a Spearman_Rank less than -0.3"))
display(MD(f"* {len(result[result['Spearman_Rank'] >= 0.3])} with a Spearman_Rank greater than 0.3"))

for y in years:
    display(MD(f'##### year = {y}'))
    display(result[result['year']==y].style.background_gradient(cmap=heatmapCM4,subset=['Spearman_Rank','Kendall_Tau'])) #,vmax=1.0,vmin=-1.0))

Output Interpretation¶

Value Effect Description/Correlation-Suggestion
1.0 Positive effect Suggests more vaccines will lead to fewer [cause of death].
0.5 Slightly positive effect Slightly suggests more vaccines will lead to fewer [cause of death].
0.0 Null/No effect Vaccines do not change the number of [cause of death].
-0.5 Slightly negative effect Slightly suggests more vaccines will lead to more [cause of death].
-1.0 Negative effect Suggests more vaccines will lead to more [cause of death].

lets point out how many causes of death's increased with the number of vaccines¶

  • 11 with a Spearman_Rank less than -0.3
  • 9 with a Spearman_Rank greater than 0.3
year = 2015¶
  cause_of_death year Spearman_Rank Kendall_Tau
4 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2015 -0.363437 -0.275132
8 Diseases of the genitourinary system (N00-N99) 2015 -0.327860 -0.232804
28 Certain conditions originating in the perinatal period (P00-P96) 2015 -0.099617 -0.095238
49 Diseases of the respiratory system (J00-J99) 2015 0.007115 0.000000
56 Mental and behavioural disorders (F00-F99) 2015 0.052545 0.052910
57 Diseases of the digestive system (K00-K93) 2015 0.052545 0.015873
58 Diseases of the skin and subcutaneous tissue (L00-L99) 2015 0.053640 0.031746
61 Diseases of the circulatory system (I00-I99) 2015 0.063492 0.037037
70 Endocrine, nutritional and metabolic diseases (E00-E90) 2015 0.085386 0.063492
75 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2015 0.102901 0.047619
87 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2015 0.189381 0.148148
93 Malignant neoplasms (C00-C97) 2015 0.281336 0.201058
99 Pregnancy, childbirth and the puerperium (O00-O99) 2015 0.339130 0.246377
year = 2016¶
  cause_of_death year Spearman_Rank Kendall_Tau
9 Malignant neoplasms (C00-C97) 2016 -0.324028 -0.216931
14 Diseases of the circulatory system (I00-I99) 2016 -0.239737 -0.179894
15 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2016 -0.236453 -0.164021
16 Diseases of the digestive system (K00-K93) 2016 -0.219485 -0.132275
22 Diseases of the respiratory system (J00-J99) 2016 -0.136289 -0.121693
23 Mental and behavioural disorders (F00-F99) 2016 -0.123700 -0.121693
32 Certain conditions originating in the perinatal period (P00-P96) 2016 -0.083196 -0.052910
51 Pregnancy, childbirth and the puerperium (O00-O99) 2016 0.035652 0.028986
55 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2016 0.052545 0.026455
64 Diseases of the skin and subcutaneous tissue (L00-L99) 2016 0.068418 0.021164
66 Diseases of the genitourinary system (N00-N99) 2016 0.077176 0.068783
72 Endocrine, nutritional and metabolic diseases (E00-E90) 2016 0.090312 0.063492
97 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2016 0.311987 0.216931
year = 2017¶
  cause_of_death year Spearman_Rank Kendall_Tau
5 Pregnancy, childbirth and the puerperium (O00-O99) 2017 -0.340870 -0.253623
7 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2017 -0.334975 -0.206349
20 Mental and behavioural disorders (F00-F99) 2017 -0.153804 -0.079365
33 Endocrine, nutritional and metabolic diseases (E00-E90) 2017 -0.081554 -0.058201
36 Malignant neoplasms (C00-C97) 2017 -0.070608 -0.063492
37 Diseases of the skin and subcutaneous tissue (L00-L99) 2017 -0.054735 -0.047619
53 Diseases of the digestive system (K00-K93) 2017 0.040504 0.042328
67 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2017 0.078270 0.084656
78 Certain conditions originating in the perinatal period (P00-P96) 2017 0.116585 0.084656
84 Diseases of the respiratory system (J00-J99) 2017 0.157088 0.089947
86 Diseases of the genitourinary system (N00-N99) 2017 0.183361 0.116402
94 Diseases of the circulatory system (I00-I99) 2017 0.283525 0.164021
98 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2017 0.321292 0.227513
year = 2018¶
  cause_of_death year Spearman_Rank Kendall_Tau
10 Pregnancy, childbirth and the puerperium (O00-O99) 2018 -0.320870 -0.246377
18 Mental and behavioural disorders (F00-F99) 2018 -0.193760 -0.158730
24 Certain conditions originating in the perinatal period (P00-P96) 2018 -0.119321 -0.084656
29 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2018 -0.094691 -0.068783
31 Diseases of the skin and subcutaneous tissue (L00-L99) 2018 -0.083744 -0.047619
38 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2018 -0.054735 -0.010582
62 Malignant neoplasms (C00-C97) 2018 0.066229 0.037037
65 Diseases of the genitourinary system (N00-N99) 2018 0.070060 0.031746
69 Diseases of the circulatory system (I00-I99) 2018 0.081554 0.037037
79 Diseases of the respiratory system (J00-J99) 2018 0.127531 0.074074
81 Endocrine, nutritional and metabolic diseases (E00-E90) 2018 0.147783 0.074074
96 Diseases of the digestive system (K00-K93) 2018 0.308155 0.222222
102 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2018 0.383142 0.259259
year = 2019¶
  cause_of_death year Spearman_Rank Kendall_Tau
11 Pregnancy, childbirth and the puerperium (O00-O99) 2019 -0.296522 -0.217391
12 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2019 -0.252326 -0.137566
13 Malignant neoplasms (C00-C97) 2019 -0.246853 -0.164021
27 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2019 -0.101806 -0.063492
42 Diseases of the skin and subcutaneous tissue (L00-L99) 2019 -0.037767 -0.010582
45 Diseases of the digestive system (K00-K93) 2019 -0.028462 -0.010582
50 Mental and behavioural disorders (F00-F99) 2019 0.021346 0.010582
60 Diseases of the respiratory system (J00-J99) 2019 0.059661 0.021164
76 Diseases of the genitourinary system (N00-N99) 2019 0.104543 0.047619
82 Endocrine, nutritional and metabolic diseases (E00-E90) 2019 0.149425 0.111111
85 Certain conditions originating in the perinatal period (P00-P96) 2019 0.158183 0.105820
88 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2019 0.195402 0.137566
89 Diseases of the circulatory system (I00-I99) 2019 0.203065 0.158730
year = 2020¶
  cause_of_death year Spearman_Rank Kendall_Tau
2 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2020 -0.423645 -0.296296
39 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2020 -0.046524 -0.058201
40 Diseases of the digestive system (K00-K93) 2020 -0.041051 -0.026455
41 Diseases of the skin and subcutaneous tissue (L00-L99) 2020 -0.038314 -0.010582
44 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2020 -0.028462 0.021164
46 Malignant neoplasms (C00-C97) 2020 -0.019704 0.026455
63 Certain conditions originating in the perinatal period (P00-P96) 2020 0.066229 0.037037
68 Mental and behavioural disorders (F00-F99) 2020 0.081007 0.063492
71 Diseases of the genitourinary system (N00-N99) 2020 0.089765 0.031746
77 Pregnancy, childbirth and the puerperium (O00-O99) 2020 0.115652 0.057971
90 Diseases of the respiratory system (J00-J99) 2020 0.237001 0.164021
91 Endocrine, nutritional and metabolic diseases (E00-E90) 2020 0.247400 0.195767
92 Diseases of the circulatory system (I00-I99) 2020 0.280788 0.185185
year = 2021¶
  cause_of_death year Spearman_Rank Kendall_Tau
3 Malignant neoplasms (C00-C97) 2021 -0.416530 -0.301587
6 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2021 -0.338259 -0.232804
34 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2021 -0.078270 -0.031746
35 Certain conditions originating in the perinatal period (P00-P96) 2021 -0.077176 -0.052910
48 Diseases of the genitourinary system (N00-N99) 2021 0.001642 0.026455
52 Diseases of the digestive system (K00-K93) 2021 0.036125 0.015873
59 Mental and behavioural disorders (F00-F99) 2021 0.055282 0.021164
73 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2021 0.091954 0.068783
74 Pregnancy, childbirth and the puerperium (O00-O99) 2021 0.099130 0.065217
80 Diseases of the skin and subcutaneous tissue (L00-L99) 2021 0.146141 0.095238
100 Endocrine, nutritional and metabolic diseases (E00-E90) 2021 0.348112 0.259259
101 Diseases of the circulatory system (I00-I99) 2021 0.356869 0.243386
103 Diseases of the respiratory system (J00-J99) 2021 0.399015 0.306878
year = 2022¶
  cause_of_death year Spearman_Rank Kendall_Tau
0 Malignant neoplasms (C00-C97) 2022 -0.459223 -0.317460
1 Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) 2022 -0.435140 -0.312169
17 Pregnancy, childbirth and the puerperium (O00-O99) 2022 -0.200870 -0.166667
19 Diseases of the genitourinary system (N00-N99) 2022 -0.160920 -0.079365
21 Mental and behavioural disorders (F00-F99) 2022 -0.149973 -0.089947
25 Diseases of the musculoskeletal system and connective tissue (M00-M99) 2022 -0.110016 -0.068783
26 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified (R00-R99) 2022 -0.110016 -0.052910
30 Diseases of the skin and subcutaneous tissue (L00-L99) 2022 -0.085933 -0.047619
43 Endocrine, nutritional and metabolic diseases (E00-E90) 2022 -0.032841 -0.010582
47 Diseases of the digestive system (K00-K93) 2022 -0.007663 0.000000
54 Certain conditions originating in the perinatal period (P00-P96) 2022 0.046524 0.047619
83 Diseases of the circulatory system (I00-I99) 2022 0.156541 0.089947
95 Diseases of the respiratory system (J00-J99) 2022 0.306513 0.211640
In [39]:
title = 'Line Chart - Cause of Death x Spearmans Rank'
display(MD(f'### {title}'))

temp = result.copy()
temp = temp.sort_values(by='Spearman_Rank', ascending=True)
temp = temp.sort_values(by='year', ascending=True)

fig = px.line(
    temp,
    x='year',
    y='Spearman_Rank',
    color='cause_of_death',
    height=750 ,
    title=title
    )
fig.update_layout(template="plotly_dark")

Line Chart - Cause of Death x Spearmans Rank¶

lets see these overtime¶

In [40]:
# lets also filter by the top 10 most and least 10 vaccinated countries
v = dxv.copy().reset_index(drop=True)
v = v.sort_values(by='value',ascending=False) #least vaccine to most vaccines
v = v[~v['value'].isna()]
include_abbr = pd.concat([v.head(5),v.tail(5)]).abbr.to_list()

# let's print this lists for reference
display(v.head(5))
display(v.tail(5))

for index,row in TB_cod.iterrows():
    print(index,row)

    temp = cd[(cd['source']=='cause_of_death') & (cd['filter'] == row['cause_of_death']) & (cd['value_type']=='normalized') & (cd['year'] < 2023)]
    temp = temp[temp['abbr'].isin(include_abbr)]

    ## adding the vaccine value (ratio (total_dose/pop.))
    temp['vac dose/pop.'] = 0.0
    for i, vrow in v.iterrows():
        mask = temp['abbr'] == vrow['abbr']  # Create a boolean mask
        temp.loc[mask, 'vac dose/pop.'] = vrow['value']

    temp = temp.sort_values(by=['year', 'name'], ascending=[True, True])

    fig = px.line(
        temp,
        x='year',
        y='value',
        color='name',
        height=750 ,
        hover_data={
            'name', 'abbr', 'value','vac dose/pop.'
        },
        title=f"cause_of_death \'{row['cause_of_death']}\' , Spearman_Rank {row['Spearman_Rank']}"
        )
    fig.update_layout(template="plotly_dark")
    fig.add_shape(
        type="line",
        x0=2015, x1=2022,
        y0=1, y1=1, # Start and end y-coordinates
        line=dict(color="Red", width=2, dash="dash"),  # Line style
        xref="x", yref="y"          # Reference axes
    )
    fig.show()
name abbr filter_x value_type_x 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 average(2022-2024) source filter_y value_type_y value
0 Finland FI TOTAL normalized 0.996 1.004 1.000 1.017 1.005 1.052 1.077 1.156 1.143 1.078 1.126 vaccine All ratio (total_dose/pop.) 14.897
1 France FR TOTAL normalized 1.008 0.985 1.007 1.013 1.019 1.132 1.099 1.122 1.062 1.062 1.082 vaccine All ratio (total_dose/pop.) 9.312
2 Portugal PT TOTAL normalized 1.006 1.000 0.994 1.025 1.013 1.140 1.129 1.127 1.072 1.068 1.089 vaccine All ratio (total_dose/pop.) 8.030
3 Italy IT TOTAL normalized 1.028 0.960 1.011 0.984 0.990 1.165 1.087 1.095 1.014 0.986 1.032 vaccine All ratio (total_dose/pop.) 7.442
4 Sweden SE TOTAL normalized 1.019 0.986 0.995 0.995 0.957 1.079 0.986 1.012 1.006 0.970 0.996 vaccine All ratio (total_dose/pop.) 6.590
name abbr filter_x value_type_x 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 average(2022-2024) source filter_y value_type_y value
24 Croatia HR TOTAL normalized 1.036 0.963 1.001 0.988 0.970 1.089 1.174 1.067 0.960 0.947 0.991 vaccine All ratio (total_dose/pop.) 2.854
25 Slovenia SI TOTAL normalized 1.006 0.976 1.018 1.018 1.024 1.216 1.151 1.118 1.070 1.061 1.083 vaccine All ratio (total_dose/pop.) 2.835
26 Slovakia SK TOTAL normalized 1.023 0.973 1.004 1.012 0.993 1.126 1.364 1.109 1.008 0.995 1.038 vaccine All ratio (total_dose/pop.) 2.609
27 Romania RO TOTAL normalized 1.021 0.982 0.998 1.005 0.994 1.151 1.276 1.027 0.918 0.838 0.928 vaccine All ratio (total_dose/pop.) 2.558
28 Bulgaria BG TOTAL normalized 1.024 0.978 0.998 0.988 0.985 1.150 1.358 1.080 0.919 0.912 0.970 vaccine All ratio (total_dose/pop.) 1.370
0 cause_of_death    Malignant neoplasms (C00-C97)
Spearman_Rank                            -0.459
Kendall_Tau                              -0.317
Name: 0, dtype: object
1 cause_of_death    Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99)
Spearman_Rank                                                                             -0.435
Kendall_Tau                                                                               -0.312
Name: 1, dtype: object
12 cause_of_death    Diseases of the respiratory system (J00-J99)
Spearman_Rank                                            0.307
Kendall_Tau                                              0.212
Name: 12, dtype: object
In [41]:
temp = cd[(cd['source']=='cause_of_death') & (cd['value_type']=='normalized')]

codlist = ['Malignant neoplasms (C00-C97)','Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99)','Diseases of the respiratory system (J00-J99)']
temp = temp[temp['filter'].isin(codlist)]

temp = pd.pivot_table(
    data = temp,
    values = 'value',
    index = ['abbr','name','filter','value_type'],
    columns=['year'],
    aggfunc='mean',
)
temp.columns.name = 'index' 
temp = temp.reset_index()

## vaccines in 2023
v2023 = cd[(cd['source']=='vaccine') & (cd['filter']=='All') & (cd['value_type']=='ratio (total_dose/pop.)') & (cd['year'] == 2023)]
v2023 = v2023[['name','source','filter','value_type','value']]

# adding it to the temp
temp = pd.merge(temp,v2023, how='left',on='name')


for c in codlist:
    display(MD(f'### {c}'))
    temp2 = temp[temp['filter_x']==c]
    temp2 = temp2.sort_values(by=2022,ascending=False)

    styled_df = temp2.style.background_gradient(cmap=heatmapCM2, axis=1, subset=[i for i in range(2015,2023)]) \
                        .background_gradient(cmap=heatmapCM3, axis=0, subset=['value'])
    
    display(MD('#### sorted by 2022 column'))
    display(styled_df)
    
    temp2 = temp2.sort_values(by='value',ascending=False)

    styled_df = temp2.style.background_gradient(cmap=heatmapCM2, axis=1, subset=[i for i in range(2015,2023)]) \
                        .background_gradient(cmap=heatmapCM3, axis=0, subset=['value'])
    
    display(MD('#### sorted by value (ratio (total_dose/pop.))'))
    display(styled_df)

# we will use this in a cell below
codxv = temp.copy()

Malignant neoplasms (C00-C97)¶

sorted by 2022 column¶

  abbr name filter_x value_type_x 2015.000000 2016.000000 2017.000000 2018.000000 2019.000000 2020.000000 2021.000000 2022.000000 2023.000000 source filter_y value_type_y value
14 CY Cyprus Malignant neoplasms (C00-C97) normalized 0.991532 0.951183 1.057285 1.068493 1.072229 1.133499 1.188045 1.117808 0.000000 vaccine All ratio (total_dose/pop.) 4.173517
47 IE Ireland Malignant neoplasms (C00-C97) normalized 0.979477 1.011917 1.008606 1.021516 1.056383 1.064548 1.063886 1.114421 0.000000 vaccine All ratio (total_dose/pop.) 5.379732
65 MT Malta Malignant neoplasms (C00-C97) normalized 0.988223 0.994647 1.017131 1.119914 1.016060 1.077088 1.046039 1.099572 0.000000 vaccine All ratio (total_dose/pop.) 4.872870
50 IS Iceland Malignant neoplasms (C00-C97) normalized 0.964978 1.084591 0.950431 0.934267 1.021552 1.005388 0.995690 1.087823 1.076509 vaccine All ratio (total_dose/pop.) 4.790077
35 FI Finland Malignant neoplasms (C00-C97) normalized 0.980161 1.006497 1.013343 1.012135 1.039357 1.047572 1.060377 1.053854 0.000000 vaccine All ratio (total_dose/pop.) 14.897412
2 AT Austria Malignant neoplasms (C00-C97) normalized 1.004749 0.995967 0.999284 1.013433 1.012262 1.031582 1.018751 1.041828 1.038022 vaccine All ratio (total_dose/pop.) 4.559281
71 NO Norway Malignant neoplasms (C00-C97) normalized 0.991960 1.001995 1.006045 1.005861 0.999417 1.002639 1.007702 1.041121 0.000000 vaccine All ratio (total_dose/pop.) 4.657366
77 PT Portugal Malignant neoplasms (C00-C97) normalized 0.980787 1.006920 1.012293 1.027973 1.050609 1.045051 1.017483 1.028120 0.000000 vaccine All ratio (total_dose/pop.) 8.030406
32 ES Spain Malignant neoplasms (C00-C97) normalized 0.989611 1.003440 1.006949 1.001899 1.005047 1.001963 1.009764 1.021535 1.027951 vaccine All ratio (total_dose/pop.) 4.926581
68 NL Netherlands Malignant neoplasms (C00-C97) normalized 0.986301 1.011021 1.002677 0.999473 1.007528 1.006549 1.006104 1.018831 0.000000 vaccine All ratio (total_dose/pop.) 4.448430
17 CZ Czechia Malignant neoplasms (C00-C97) normalized 0.989232 1.004760 1.006008 1.019701 1.038570 1.032917 0.996867 1.016911 1.006669 vaccine All ratio (total_dose/pop.) 3.676542
89 SI Slovenia Malignant neoplasms (C00-C97) normalized 0.990301 0.996979 1.012721 1.042455 0.997138 1.021784 0.986961 1.015742 0.000000 vaccine All ratio (total_dose/pop.) 2.835063
20 DE Germany Malignant neoplasms (C00-C97) normalized 0.992060 1.010891 0.997049 1.007774 1.013348 1.012863 1.002733 1.014257 0.000000 vaccine All ratio (total_dose/pop.) 4.547240
23 DK Denmark Malignant neoplasms (C00-C97) normalized 0.987781 1.011301 1.000919 1.003931 1.032706 1.011749 1.031360 1.011621 0.000000 vaccine All ratio (total_dose/pop.) 5.147361
38 FR France Malignant neoplasms (C00-C97) normalized 0.991905 1.004069 1.004026 0.997865 1.002613 1.001065 0.995754 1.007122 0.000000 vaccine All ratio (total_dose/pop.) 9.311581
11 CH Switzerland Malignant neoplasms (C00-C97) normalized 1.001197 0.997778 1.001026 1.005698 0.997493 0.977379 0.973789 0.995840 0.000000 nan nan nan nan
86 SE Sweden Malignant neoplasms (C00-C97) normalized 0.989690 0.996485 1.013825 0.995911 0.993396 0.997676 0.980910 0.993352 0.000000 vaccine All ratio (total_dose/pop.) 6.589887
5 BE Belgium Malignant neoplasms (C00-C97) normalized 1.008534 1.008903 0.982563 0.977000 0.983594 0.967091 0.965801 0.971511 0.000000 vaccine All ratio (total_dose/pop.) 5.129494
56 LT Lithuania Malignant neoplasms (C00-C97) normalized 1.019847 1.002132 0.978020 0.980727 0.982572 1.003855 0.948864 0.970147 0.000000 vaccine All ratio (total_dose/pop.) 4.846135
53 IT Italy Malignant neoplasms (C00-C97) normalized 0.999683 0.999372 1.000945 1.001978 0.994882 0.987206 0.969412 0.967980 0.000000 vaccine All ratio (total_dose/pop.) 7.442137
29 EL Greece Malignant neoplasms (C00-C97) normalized 0.993818 1.006138 1.000045 0.995358 1.004229 1.010891 1.007577 0.966031 0.000000 vaccine All ratio (total_dose/pop.) 6.445362
74 PL Poland Malignant neoplasms (C00-C97) normalized 1.005447 0.998825 0.995728 1.012948 1.002550 0.997746 0.935670 0.960480 0.000000 vaccine All ratio (total_dose/pop.) 6.050301
59 LU Luxembourg Malignant neoplasms (C00-C97) normalized 0.979083 0.997539 1.023377 0.993848 1.018763 0.939403 0.979083 0.958782 0.977238 vaccine All ratio (total_dose/pop.) 4.084914
62 LV Latvia Malignant neoplasms (C00-C97) normalized 0.991956 0.996512 1.011532 1.002250 1.000225 1.012544 0.971367 0.958204 0.000000 vaccine All ratio (total_dose/pop.) 3.267880
92 SK Slovakia Malignant neoplasms (C00-C97) normalized 0.997125 0.998441 1.004434 1.026214 0.991863 1.033742 0.951958 0.941214 0.971472 vaccine All ratio (total_dose/pop.) 2.608904
41 HR Croatia Malignant neoplasms (C00-C97) normalized 1.005125 1.010202 0.984673 1.001335 0.966725 0.952065 0.957858 0.935618 0.000000 vaccine All ratio (total_dose/pop.) 2.854150
44 HU Hungary Malignant neoplasms (C00-C97) normalized 0.997496 1.003427 0.999077 0.991229 0.973769 0.961936 0.930604 0.926437 0.000000 vaccine All ratio (total_dose/pop.) 3.404480
8 BG Bulgaria Malignant neoplasms (C00-C97) normalized 1.025194 0.983432 0.991373 0.992287 1.036849 1.051645 0.977034 0.925674 0.000000 vaccine All ratio (total_dose/pop.) 1.370123
26 EE Estonia Malignant neoplasms (C00-C97) normalized 1.010756 0.987146 1.002099 1.025184 0.998951 0.957765 0.969307 0.913431 0.000000 vaccine All ratio (total_dose/pop.) 3.277817
83 RS Serbia Malignant neoplasms (C00-C97) normalized 0.996101 1.003138 1.000761 1.006913 0.994470 0.967767 0.931046 0.901734 0.000000 nan nan nan nan
80 RO Romania Malignant neoplasms (C00-C97) normalized 0.992785 1.003276 1.003938 1.000454 0.971862 0.961682 0.893871 0.884509 0.000000 vaccine All ratio (total_dose/pop.) 2.557969

sorted by value (ratio (total_dose/pop.))¶

  abbr name filter_x value_type_x 2015.000000 2016.000000 2017.000000 2018.000000 2019.000000 2020.000000 2021.000000 2022.000000 2023.000000 source filter_y value_type_y value
35 FI Finland Malignant neoplasms (C00-C97) normalized 0.980161 1.006497 1.013343 1.012135 1.039357 1.047572 1.060377 1.053854 0.000000 vaccine All ratio (total_dose/pop.) 14.897412
38 FR France Malignant neoplasms (C00-C97) normalized 0.991905 1.004069 1.004026 0.997865 1.002613 1.001065 0.995754 1.007122 0.000000 vaccine All ratio (total_dose/pop.) 9.311581
77 PT Portugal Malignant neoplasms (C00-C97) normalized 0.980787 1.006920 1.012293 1.027973 1.050609 1.045051 1.017483 1.028120 0.000000 vaccine All ratio (total_dose/pop.) 8.030406
53 IT Italy Malignant neoplasms (C00-C97) normalized 0.999683 0.999372 1.000945 1.001978 0.994882 0.987206 0.969412 0.967980 0.000000 vaccine All ratio (total_dose/pop.) 7.442137
86 SE Sweden Malignant neoplasms (C00-C97) normalized 0.989690 0.996485 1.013825 0.995911 0.993396 0.997676 0.980910 0.993352 0.000000 vaccine All ratio (total_dose/pop.) 6.589887
29 EL Greece Malignant neoplasms (C00-C97) normalized 0.993818 1.006138 1.000045 0.995358 1.004229 1.010891 1.007577 0.966031 0.000000 vaccine All ratio (total_dose/pop.) 6.445362
74 PL Poland Malignant neoplasms (C00-C97) normalized 1.005447 0.998825 0.995728 1.012948 1.002550 0.997746 0.935670 0.960480 0.000000 vaccine All ratio (total_dose/pop.) 6.050301
47 IE Ireland Malignant neoplasms (C00-C97) normalized 0.979477 1.011917 1.008606 1.021516 1.056383 1.064548 1.063886 1.114421 0.000000 vaccine All ratio (total_dose/pop.) 5.379732
23 DK Denmark Malignant neoplasms (C00-C97) normalized 0.987781 1.011301 1.000919 1.003931 1.032706 1.011749 1.031360 1.011621 0.000000 vaccine All ratio (total_dose/pop.) 5.147361
5 BE Belgium Malignant neoplasms (C00-C97) normalized 1.008534 1.008903 0.982563 0.977000 0.983594 0.967091 0.965801 0.971511 0.000000 vaccine All ratio (total_dose/pop.) 5.129494
32 ES Spain Malignant neoplasms (C00-C97) normalized 0.989611 1.003440 1.006949 1.001899 1.005047 1.001963 1.009764 1.021535 1.027951 vaccine All ratio (total_dose/pop.) 4.926581
65 MT Malta Malignant neoplasms (C00-C97) normalized 0.988223 0.994647 1.017131 1.119914 1.016060 1.077088 1.046039 1.099572 0.000000 vaccine All ratio (total_dose/pop.) 4.872870
56 LT Lithuania Malignant neoplasms (C00-C97) normalized 1.019847 1.002132 0.978020 0.980727 0.982572 1.003855 0.948864 0.970147 0.000000 vaccine All ratio (total_dose/pop.) 4.846135
50 IS Iceland Malignant neoplasms (C00-C97) normalized 0.964978 1.084591 0.950431 0.934267 1.021552 1.005388 0.995690 1.087823 1.076509 vaccine All ratio (total_dose/pop.) 4.790077
71 NO Norway Malignant neoplasms (C00-C97) normalized 0.991960 1.001995 1.006045 1.005861 0.999417 1.002639 1.007702 1.041121 0.000000 vaccine All ratio (total_dose/pop.) 4.657366
2 AT Austria Malignant neoplasms (C00-C97) normalized 1.004749 0.995967 0.999284 1.013433 1.012262 1.031582 1.018751 1.041828 1.038022 vaccine All ratio (total_dose/pop.) 4.559281
20 DE Germany Malignant neoplasms (C00-C97) normalized 0.992060 1.010891 0.997049 1.007774 1.013348 1.012863 1.002733 1.014257 0.000000 vaccine All ratio (total_dose/pop.) 4.547240
68 NL Netherlands Malignant neoplasms (C00-C97) normalized 0.986301 1.011021 1.002677 0.999473 1.007528 1.006549 1.006104 1.018831 0.000000 vaccine All ratio (total_dose/pop.) 4.448430
14 CY Cyprus Malignant neoplasms (C00-C97) normalized 0.991532 0.951183 1.057285 1.068493 1.072229 1.133499 1.188045 1.117808 0.000000 vaccine All ratio (total_dose/pop.) 4.173517
59 LU Luxembourg Malignant neoplasms (C00-C97) normalized 0.979083 0.997539 1.023377 0.993848 1.018763 0.939403 0.979083 0.958782 0.977238 vaccine All ratio (total_dose/pop.) 4.084914
17 CZ Czechia Malignant neoplasms (C00-C97) normalized 0.989232 1.004760 1.006008 1.019701 1.038570 1.032917 0.996867 1.016911 1.006669 vaccine All ratio (total_dose/pop.) 3.676542
44 HU Hungary Malignant neoplasms (C00-C97) normalized 0.997496 1.003427 0.999077 0.991229 0.973769 0.961936 0.930604 0.926437 0.000000 vaccine All ratio (total_dose/pop.) 3.404480
26 EE Estonia Malignant neoplasms (C00-C97) normalized 1.010756 0.987146 1.002099 1.025184 0.998951 0.957765 0.969307 0.913431 0.000000 vaccine All ratio (total_dose/pop.) 3.277817
62 LV Latvia Malignant neoplasms (C00-C97) normalized 0.991956 0.996512 1.011532 1.002250 1.000225 1.012544 0.971367 0.958204 0.000000 vaccine All ratio (total_dose/pop.) 3.267880
41 HR Croatia Malignant neoplasms (C00-C97) normalized 1.005125 1.010202 0.984673 1.001335 0.966725 0.952065 0.957858 0.935618 0.000000 vaccine All ratio (total_dose/pop.) 2.854150
89 SI Slovenia Malignant neoplasms (C00-C97) normalized 0.990301 0.996979 1.012721 1.042455 0.997138 1.021784 0.986961 1.015742 0.000000 vaccine All ratio (total_dose/pop.) 2.835063
92 SK Slovakia Malignant neoplasms (C00-C97) normalized 0.997125 0.998441 1.004434 1.026214 0.991863 1.033742 0.951958 0.941214 0.971472 vaccine All ratio (total_dose/pop.) 2.608904
80 RO Romania Malignant neoplasms (C00-C97) normalized 0.992785 1.003276 1.003938 1.000454 0.971862 0.961682 0.893871 0.884509 0.000000 vaccine All ratio (total_dose/pop.) 2.557969
8 BG Bulgaria Malignant neoplasms (C00-C97) normalized 1.025194 0.983432 0.991373 0.992287 1.036849 1.051645 0.977034 0.925674 0.000000 vaccine All ratio (total_dose/pop.) 1.370123
11 CH Switzerland Malignant neoplasms (C00-C97) normalized 1.001197 0.997778 1.001026 1.005698 0.997493 0.977379 0.973789 0.995840 0.000000 nan nan nan nan
83 RS Serbia Malignant neoplasms (C00-C97) normalized 0.996101 1.003138 1.000761 1.006913 0.994470 0.967767 0.931046 0.901734 0.000000 nan nan nan nan

Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99)¶

sorted by 2022 column¶

  abbr name filter_x value_type_x 2015.000000 2016.000000 2017.000000 2018.000000 2019.000000 2020.000000 2021.000000 2022.000000 2023.000000 source filter_y value_type_y value
12 CY Cyprus Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.933333 1.133333 0.933333 0.533333 1.666667 1.066667 1.400000 1.466667 0.000000 vaccine All ratio (total_dose/pop.) 4.173517
45 IE Ireland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.049080 0.926380 1.024540 1.104294 1.233129 1.141104 1.098160 1.190184 0.000000 vaccine All ratio (total_dose/pop.) 5.379732
18 DE Germany Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.925963 1.018763 1.055274 1.085700 1.061359 1.032454 1.081643 1.152637 0.000000 vaccine All ratio (total_dose/pop.) 4.547240
87 SI Slovenia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.728972 1.205607 1.065421 1.261682 1.345794 1.065421 1.065421 1.149533 0.000000 vaccine All ratio (total_dose/pop.) 2.835063
3 BE Belgium Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.947814 1.095910 0.956276 1.315938 1.121298 1.002821 0.875882 1.108604 0.000000 vaccine All ratio (total_dose/pop.) 5.129494
75 PT Portugal Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.049734 0.953819 0.996448 1.246892 1.278863 1.087034 1.134991 1.076377 0.000000 vaccine All ratio (total_dose/pop.) 8.030406
33 FI Finland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.886239 1.078899 1.034862 0.963303 0.935780 0.941284 1.056881 1.073394 0.000000 vaccine All ratio (total_dose/pop.) 14.897412
30 ES Spain Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.977254 1.030869 0.991877 1.027214 0.993095 1.002843 1.015028 1.050366 1.012591 vaccine All ratio (total_dose/pop.) 4.926581
9 CH Switzerland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.030508 1.010169 0.959322 0.847458 0.888136 0.830508 0.820339 1.040678 0.000000 nan nan nan nan
84 SE Sweden Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.807259 1.073842 1.118899 1.122653 0.987484 1.025031 0.976220 1.040050 0.000000 vaccine All ratio (total_dose/pop.) 6.589887
0 AT Austria Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.008816 1.031486 0.959698 1.027708 1.005038 1.008816 0.944584 1.039043 1.031486 vaccine All ratio (total_dose/pop.) 4.559281
66 NL Netherlands Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.968590 0.975164 1.056245 1.130752 1.130752 0.981738 0.966399 1.010226 0.000000 vaccine All ratio (total_dose/pop.) 4.448430
36 FR France Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.017804 1.008309 0.973887 0.900297 0.960237 0.897923 0.900890 0.999407 0.000000 vaccine All ratio (total_dose/pop.) 9.311581
15 CZ Czechia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.977597 1.026477 0.995927 1.014257 0.916497 0.940937 0.910387 0.983707 0.837067 vaccine All ratio (total_dose/pop.) 3.676542
51 IT Italy Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.039006 0.918261 1.042733 0.980870 0.948820 1.005466 0.983106 0.975652 0.000000 vaccine All ratio (total_dose/pop.) 7.442137
21 DK Denmark Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.946988 1.026506 1.026506 1.091566 0.932530 1.055422 0.881928 0.939759 0.000000 vaccine All ratio (total_dose/pop.) 5.147361
72 PL Poland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.981561 0.970969 1.047470 1.043939 0.927423 0.915653 0.993331 0.939192 0.000000 vaccine All ratio (total_dose/pop.) 6.050301
63 MT Malta Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.913043 0.847826 1.239130 1.173913 1.239130 1.173913 1.173913 0.913043 0.000000 vaccine All ratio (total_dose/pop.) 4.872870
48 IS Iceland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.900000 1.050000 1.050000 0.450000 1.500000 1.950000 0.900000 0.900000 0.750000 vaccine All ratio (total_dose/pop.) 4.790077
81 RS Serbia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.918750 1.050000 1.031250 1.031250 1.068750 0.984375 0.900000 0.890625 0.000000 nan nan nan nan
90 SK Slovakia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.042316 1.042316 0.915367 1.189310 1.155902 0.968820 0.855234 0.888641 0.761693 vaccine All ratio (total_dose/pop.) 2.608904
27 EL Greece Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.862559 1.127962 1.009479 0.872038 0.928910 1.071090 0.848341 0.886256 0.000000 vaccine All ratio (total_dose/pop.) 6.445362
42 HU Hungary Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.025612 0.978842 0.995546 0.988864 0.881960 0.895323 0.841871 0.865256 0.000000 vaccine All ratio (total_dose/pop.) 3.404480
69 NO Norway Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.916031 1.045802 1.038168 0.916031 0.977099 0.969466 1.022901 0.832061 0.000000 vaccine All ratio (total_dose/pop.) 4.657366
78 RO Romania Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.047894 0.988439 0.963666 0.886870 0.775392 0.837325 0.797688 0.815029 0.000000 vaccine All ratio (total_dose/pop.) 2.557969
39 HR Croatia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.088328 1.003155 0.908517 0.899054 0.690852 0.917981 0.908517 0.804416 0.000000 vaccine All ratio (total_dose/pop.) 2.854150
24 EE Estonia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.759494 0.949367 1.291139 1.518987 0.797468 0.797468 0.835443 0.797468 0.000000 vaccine All ratio (total_dose/pop.) 3.277817
57 LU Luxembourg Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.870968 1.258065 0.870968 1.064516 0.677419 0.870968 1.258065 0.774194 1.161290 vaccine All ratio (total_dose/pop.) 4.084914
54 LT Lithuania Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.098214 1.017857 0.883929 0.937500 0.723214 0.736607 0.790179 0.696429 0.000000 vaccine All ratio (total_dose/pop.) 4.846135
6 BG Bulgaria Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.184416 0.989610 0.825974 0.763636 0.864935 0.732468 0.740260 0.592208 0.000000 vaccine All ratio (total_dose/pop.) 1.370123
60 LV Latvia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.006452 1.122581 0.870968 0.851613 0.677419 0.735484 0.716129 0.561290 0.000000 vaccine All ratio (total_dose/pop.) 3.267880

sorted by value (ratio (total_dose/pop.))¶

  abbr name filter_x value_type_x 2015.000000 2016.000000 2017.000000 2018.000000 2019.000000 2020.000000 2021.000000 2022.000000 2023.000000 source filter_y value_type_y value
33 FI Finland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.886239 1.078899 1.034862 0.963303 0.935780 0.941284 1.056881 1.073394 0.000000 vaccine All ratio (total_dose/pop.) 14.897412
36 FR France Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.017804 1.008309 0.973887 0.900297 0.960237 0.897923 0.900890 0.999407 0.000000 vaccine All ratio (total_dose/pop.) 9.311581
75 PT Portugal Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.049734 0.953819 0.996448 1.246892 1.278863 1.087034 1.134991 1.076377 0.000000 vaccine All ratio (total_dose/pop.) 8.030406
51 IT Italy Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.039006 0.918261 1.042733 0.980870 0.948820 1.005466 0.983106 0.975652 0.000000 vaccine All ratio (total_dose/pop.) 7.442137
84 SE Sweden Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.807259 1.073842 1.118899 1.122653 0.987484 1.025031 0.976220 1.040050 0.000000 vaccine All ratio (total_dose/pop.) 6.589887
27 EL Greece Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.862559 1.127962 1.009479 0.872038 0.928910 1.071090 0.848341 0.886256 0.000000 vaccine All ratio (total_dose/pop.) 6.445362
72 PL Poland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.981561 0.970969 1.047470 1.043939 0.927423 0.915653 0.993331 0.939192 0.000000 vaccine All ratio (total_dose/pop.) 6.050301
45 IE Ireland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.049080 0.926380 1.024540 1.104294 1.233129 1.141104 1.098160 1.190184 0.000000 vaccine All ratio (total_dose/pop.) 5.379732
21 DK Denmark Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.946988 1.026506 1.026506 1.091566 0.932530 1.055422 0.881928 0.939759 0.000000 vaccine All ratio (total_dose/pop.) 5.147361
3 BE Belgium Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.947814 1.095910 0.956276 1.315938 1.121298 1.002821 0.875882 1.108604 0.000000 vaccine All ratio (total_dose/pop.) 5.129494
30 ES Spain Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.977254 1.030869 0.991877 1.027214 0.993095 1.002843 1.015028 1.050366 1.012591 vaccine All ratio (total_dose/pop.) 4.926581
63 MT Malta Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.913043 0.847826 1.239130 1.173913 1.239130 1.173913 1.173913 0.913043 0.000000 vaccine All ratio (total_dose/pop.) 4.872870
54 LT Lithuania Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.098214 1.017857 0.883929 0.937500 0.723214 0.736607 0.790179 0.696429 0.000000 vaccine All ratio (total_dose/pop.) 4.846135
48 IS Iceland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.900000 1.050000 1.050000 0.450000 1.500000 1.950000 0.900000 0.900000 0.750000 vaccine All ratio (total_dose/pop.) 4.790077
69 NO Norway Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.916031 1.045802 1.038168 0.916031 0.977099 0.969466 1.022901 0.832061 0.000000 vaccine All ratio (total_dose/pop.) 4.657366
0 AT Austria Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.008816 1.031486 0.959698 1.027708 1.005038 1.008816 0.944584 1.039043 1.031486 vaccine All ratio (total_dose/pop.) 4.559281
18 DE Germany Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.925963 1.018763 1.055274 1.085700 1.061359 1.032454 1.081643 1.152637 0.000000 vaccine All ratio (total_dose/pop.) 4.547240
66 NL Netherlands Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.968590 0.975164 1.056245 1.130752 1.130752 0.981738 0.966399 1.010226 0.000000 vaccine All ratio (total_dose/pop.) 4.448430
12 CY Cyprus Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.933333 1.133333 0.933333 0.533333 1.666667 1.066667 1.400000 1.466667 0.000000 vaccine All ratio (total_dose/pop.) 4.173517
57 LU Luxembourg Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.870968 1.258065 0.870968 1.064516 0.677419 0.870968 1.258065 0.774194 1.161290 vaccine All ratio (total_dose/pop.) 4.084914
15 CZ Czechia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.977597 1.026477 0.995927 1.014257 0.916497 0.940937 0.910387 0.983707 0.837067 vaccine All ratio (total_dose/pop.) 3.676542
42 HU Hungary Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.025612 0.978842 0.995546 0.988864 0.881960 0.895323 0.841871 0.865256 0.000000 vaccine All ratio (total_dose/pop.) 3.404480
24 EE Estonia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.759494 0.949367 1.291139 1.518987 0.797468 0.797468 0.835443 0.797468 0.000000 vaccine All ratio (total_dose/pop.) 3.277817
60 LV Latvia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.006452 1.122581 0.870968 0.851613 0.677419 0.735484 0.716129 0.561290 0.000000 vaccine All ratio (total_dose/pop.) 3.267880
39 HR Croatia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.088328 1.003155 0.908517 0.899054 0.690852 0.917981 0.908517 0.804416 0.000000 vaccine All ratio (total_dose/pop.) 2.854150
87 SI Slovenia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.728972 1.205607 1.065421 1.261682 1.345794 1.065421 1.065421 1.149533 0.000000 vaccine All ratio (total_dose/pop.) 2.835063
90 SK Slovakia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.042316 1.042316 0.915367 1.189310 1.155902 0.968820 0.855234 0.888641 0.761693 vaccine All ratio (total_dose/pop.) 2.608904
78 RO Romania Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.047894 0.988439 0.963666 0.886870 0.775392 0.837325 0.797688 0.815029 0.000000 vaccine All ratio (total_dose/pop.) 2.557969
6 BG Bulgaria Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.184416 0.989610 0.825974 0.763636 0.864935 0.732468 0.740260 0.592208 0.000000 vaccine All ratio (total_dose/pop.) 1.370123
9 CH Switzerland Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 1.030508 1.010169 0.959322 0.847458 0.888136 0.830508 0.820339 1.040678 0.000000 nan nan nan nan
81 RS Serbia Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99) normalized 0.918750 1.050000 1.031250 1.031250 1.068750 0.984375 0.900000 0.890625 0.000000 nan nan nan nan

Diseases of the respiratory system (J00-J99)¶

sorted by 2022 column¶

  abbr name filter_x value_type_x 2015.000000 2016.000000 2017.000000 2018.000000 2019.000000 2020.000000 2021.000000 2022.000000 2023.000000 source filter_y value_type_y value
91 SK Slovakia Diseases of the respiratory system (J00-J99) normalized 1.021516 0.890940 1.087544 1.026846 0.966147 1.181405 2.025563 1.594157 1.340111 vaccine All ratio (total_dose/pop.) 2.608904
64 MT Malta Diseases of the respiratory system (J00-J99) normalized 0.986072 0.941504 1.072423 1.089136 1.284123 1.200557 1.253482 1.456825 0.000000 vaccine All ratio (total_dose/pop.) 4.872870
79 RO Romania Diseases of the respiratory system (J00-J99) normalized 0.997274 0.968615 1.034111 1.138241 1.181262 1.426691 1.592194 1.340648 0.000000 vaccine All ratio (total_dose/pop.) 2.557969
7 BG Bulgaria Diseases of the respiratory system (J00-J99) normalized 0.929681 1.018976 1.051343 1.120897 0.965261 1.379141 1.567144 1.282730 0.000000 vaccine All ratio (total_dose/pop.) 1.370123
82 RS Serbia Diseases of the respiratory system (J00-J99) normalized 1.055686 0.925837 1.018478 0.996646 1.044865 1.274758 1.366260 1.248560 0.000000 nan nan nan nan
49 IS Iceland Diseases of the respiratory system (J00-J99) normalized 0.836735 0.948980 1.214286 1.163265 0.857143 0.923469 0.933673 1.229592 1.040816 vaccine All ratio (total_dose/pop.) 4.790077
73 PL Poland Diseases of the respiratory system (J00-J99) normalized 0.989726 0.938055 1.072220 1.123850 1.109924 1.171204 1.147222 1.226214 0.000000 vaccine All ratio (total_dose/pop.) 6.050301
25 EE Estonia Diseases of the respiratory system (J00-J99) normalized 0.980036 1.007260 1.012704 1.194192 1.088929 0.932849 1.121597 1.136116 0.000000 vaccine All ratio (total_dose/pop.) 3.277817
16 CZ Czechia Diseases of the respiratory system (J00-J99) normalized 0.988986 0.945151 1.065862 1.101009 1.085739 1.097718 1.027424 1.127731 1.140632 vaccine All ratio (total_dose/pop.) 3.676542
61 LV Latvia Diseases of the respiratory system (J00-J99) normalized 0.898739 1.037395 1.063866 1.162185 0.984454 0.901261 0.983193 1.123109 0.000000 vaccine All ratio (total_dose/pop.) 3.267880
13 CY Cyprus Diseases of the respiratory system (J00-J99) normalized 1.003663 0.906593 1.089744 0.974359 1.203297 1.139194 0.954212 1.082418 0.000000 vaccine All ratio (total_dose/pop.) 4.173517
37 FR France Diseases of the respiratory system (J00-J99) normalized 0.995234 0.962637 1.042129 1.050499 1.059961 0.901281 0.846249 1.049755 0.000000 vaccine All ratio (total_dose/pop.) 9.311581
22 DK Denmark Diseases of the respiratory system (J00-J99) normalized 0.965601 0.985910 1.048489 1.118829 1.008366 0.934724 0.987726 1.038417 0.000000 vaccine All ratio (total_dose/pop.) 5.147361
67 NL Netherlands Diseases of the respiratory system (J00-J99) normalized 1.010924 0.955243 1.033833 1.120297 1.006788 0.837121 0.807451 1.033515 0.000000 vaccine All ratio (total_dose/pop.) 4.448430
1 AT Austria Diseases of the respiratory system (J00-J99) normalized 0.950587 0.923174 1.126239 1.178745 1.127504 1.029873 0.852534 1.027553 1.148380 vaccine All ratio (total_dose/pop.) 4.559281
52 IT Italy Diseases of the respiratory system (J00-J99) normalized 0.980644 0.940604 1.078753 1.046090 1.084513 1.154365 0.914167 1.024463 0.000000 vaccine All ratio (total_dose/pop.) 7.442137
10 CH Switzerland Diseases of the respiratory system (J00-J99) normalized 1.036089 0.920944 1.042967 1.036311 1.022112 0.841739 0.808238 1.010353 0.000000 nan nan nan nan
19 DE Germany Diseases of the respiratory system (J00-J99) normalized 1.018797 0.960947 1.020256 1.069720 1.000015 0.914894 0.854677 1.008996 0.000000 vaccine All ratio (total_dose/pop.) 4.547240
70 NO Norway Diseases of the respiratory system (J00-J99) normalized 0.959046 0.991522 1.049432 1.019001 0.995155 0.855715 0.828236 0.999016 0.000000 vaccine All ratio (total_dose/pop.) 4.657366
4 BE Belgium Diseases of the respiratory system (J00-J99) normalized 1.008991 0.955891 1.035118 1.108343 1.041629 0.884865 0.778579 0.988275 0.000000 vaccine All ratio (total_dose/pop.) 5.129494
46 IE Ireland Diseases of the respiratory system (J00-J99) normalized 0.977738 0.995446 1.026815 1.024791 0.994182 0.827473 0.810018 0.980015 0.000000 vaccine All ratio (total_dose/pop.) 5.379732
58 LU Luxembourg Diseases of the respiratory system (J00-J99) normalized 1.036364 0.956150 1.007487 1.244920 1.241711 1.039572 0.959358 0.972193 1.273797 vaccine All ratio (total_dose/pop.) 4.084914
85 SE Sweden Diseases of the respiratory system (J00-J99) normalized 0.989235 0.969670 1.041095 1.083795 0.959267 0.862378 0.788624 0.962838 0.000000 vaccine All ratio (total_dose/pop.) 6.589887
40 HR Croatia Diseases of the respiratory system (J00-J99) normalized 0.968126 0.890546 1.141328 0.857349 0.841833 0.807914 0.910031 0.961270 0.000000 vaccine All ratio (total_dose/pop.) 2.854150
34 FI Finland Diseases of the respiratory system (J00-J99) normalized 0.944544 1.039681 1.015775 1.088958 0.961132 0.854285 0.860628 0.946495 0.000000 vaccine All ratio (total_dose/pop.) 14.897412
28 EL Greece Diseases of the respiratory system (J00-J99) normalized 1.047398 0.974959 0.977642 0.894401 0.959568 0.887906 0.923419 0.929491 0.000000 vaccine All ratio (total_dose/pop.) 6.445362
76 PT Portugal Diseases of the respiratory system (J00-J99) normalized 1.016271 1.016573 0.967155 1.003823 0.923698 0.849835 0.774992 0.916681 0.000000 vaccine All ratio (total_dose/pop.) 8.030406
55 LT Lithuania Diseases of the respiratory system (J00-J99) normalized 1.020121 0.968813 1.011066 1.044266 0.906942 0.908451 0.802062 0.876761 0.000000 vaccine All ratio (total_dose/pop.) 4.846135
43 HU Hungary Diseases of the respiratory system (J00-J99) normalized 1.069291 0.906061 1.024648 1.020246 1.045649 0.900528 0.847208 0.864185 0.000000 vaccine All ratio (total_dose/pop.) 3.404480
31 ES Spain Diseases of the respiratory system (J00-J99) normalized 1.035062 0.934527 1.030411 1.071775 0.951875 0.846907 0.709559 0.858905 0.938340 vaccine All ratio (total_dose/pop.) 4.926581
88 SI Slovenia Diseases of the respiratory system (J00-J99) normalized 1.018009 0.986365 0.995626 0.835863 0.833548 0.622074 0.520196 0.540262 0.000000 vaccine All ratio (total_dose/pop.) 2.835063

sorted by value (ratio (total_dose/pop.))¶

  abbr name filter_x value_type_x 2015.000000 2016.000000 2017.000000 2018.000000 2019.000000 2020.000000 2021.000000 2022.000000 2023.000000 source filter_y value_type_y value
34 FI Finland Diseases of the respiratory system (J00-J99) normalized 0.944544 1.039681 1.015775 1.088958 0.961132 0.854285 0.860628 0.946495 0.000000 vaccine All ratio (total_dose/pop.) 14.897412
37 FR France Diseases of the respiratory system (J00-J99) normalized 0.995234 0.962637 1.042129 1.050499 1.059961 0.901281 0.846249 1.049755 0.000000 vaccine All ratio (total_dose/pop.) 9.311581
76 PT Portugal Diseases of the respiratory system (J00-J99) normalized 1.016271 1.016573 0.967155 1.003823 0.923698 0.849835 0.774992 0.916681 0.000000 vaccine All ratio (total_dose/pop.) 8.030406
52 IT Italy Diseases of the respiratory system (J00-J99) normalized 0.980644 0.940604 1.078753 1.046090 1.084513 1.154365 0.914167 1.024463 0.000000 vaccine All ratio (total_dose/pop.) 7.442137
85 SE Sweden Diseases of the respiratory system (J00-J99) normalized 0.989235 0.969670 1.041095 1.083795 0.959267 0.862378 0.788624 0.962838 0.000000 vaccine All ratio (total_dose/pop.) 6.589887
28 EL Greece Diseases of the respiratory system (J00-J99) normalized 1.047398 0.974959 0.977642 0.894401 0.959568 0.887906 0.923419 0.929491 0.000000 vaccine All ratio (total_dose/pop.) 6.445362
73 PL Poland Diseases of the respiratory system (J00-J99) normalized 0.989726 0.938055 1.072220 1.123850 1.109924 1.171204 1.147222 1.226214 0.000000 vaccine All ratio (total_dose/pop.) 6.050301
46 IE Ireland Diseases of the respiratory system (J00-J99) normalized 0.977738 0.995446 1.026815 1.024791 0.994182 0.827473 0.810018 0.980015 0.000000 vaccine All ratio (total_dose/pop.) 5.379732
22 DK Denmark Diseases of the respiratory system (J00-J99) normalized 0.965601 0.985910 1.048489 1.118829 1.008366 0.934724 0.987726 1.038417 0.000000 vaccine All ratio (total_dose/pop.) 5.147361
4 BE Belgium Diseases of the respiratory system (J00-J99) normalized 1.008991 0.955891 1.035118 1.108343 1.041629 0.884865 0.778579 0.988275 0.000000 vaccine All ratio (total_dose/pop.) 5.129494
31 ES Spain Diseases of the respiratory system (J00-J99) normalized 1.035062 0.934527 1.030411 1.071775 0.951875 0.846907 0.709559 0.858905 0.938340 vaccine All ratio (total_dose/pop.) 4.926581
64 MT Malta Diseases of the respiratory system (J00-J99) normalized 0.986072 0.941504 1.072423 1.089136 1.284123 1.200557 1.253482 1.456825 0.000000 vaccine All ratio (total_dose/pop.) 4.872870
55 LT Lithuania Diseases of the respiratory system (J00-J99) normalized 1.020121 0.968813 1.011066 1.044266 0.906942 0.908451 0.802062 0.876761 0.000000 vaccine All ratio (total_dose/pop.) 4.846135
49 IS Iceland Diseases of the respiratory system (J00-J99) normalized 0.836735 0.948980 1.214286 1.163265 0.857143 0.923469 0.933673 1.229592 1.040816 vaccine All ratio (total_dose/pop.) 4.790077
70 NO Norway Diseases of the respiratory system (J00-J99) normalized 0.959046 0.991522 1.049432 1.019001 0.995155 0.855715 0.828236 0.999016 0.000000 vaccine All ratio (total_dose/pop.) 4.657366
1 AT Austria Diseases of the respiratory system (J00-J99) normalized 0.950587 0.923174 1.126239 1.178745 1.127504 1.029873 0.852534 1.027553 1.148380 vaccine All ratio (total_dose/pop.) 4.559281
19 DE Germany Diseases of the respiratory system (J00-J99) normalized 1.018797 0.960947 1.020256 1.069720 1.000015 0.914894 0.854677 1.008996 0.000000 vaccine All ratio (total_dose/pop.) 4.547240
67 NL Netherlands Diseases of the respiratory system (J00-J99) normalized 1.010924 0.955243 1.033833 1.120297 1.006788 0.837121 0.807451 1.033515 0.000000 vaccine All ratio (total_dose/pop.) 4.448430
13 CY Cyprus Diseases of the respiratory system (J00-J99) normalized 1.003663 0.906593 1.089744 0.974359 1.203297 1.139194 0.954212 1.082418 0.000000 vaccine All ratio (total_dose/pop.) 4.173517
58 LU Luxembourg Diseases of the respiratory system (J00-J99) normalized 1.036364 0.956150 1.007487 1.244920 1.241711 1.039572 0.959358 0.972193 1.273797 vaccine All ratio (total_dose/pop.) 4.084914
16 CZ Czechia Diseases of the respiratory system (J00-J99) normalized 0.988986 0.945151 1.065862 1.101009 1.085739 1.097718 1.027424 1.127731 1.140632 vaccine All ratio (total_dose/pop.) 3.676542
43 HU Hungary Diseases of the respiratory system (J00-J99) normalized 1.069291 0.906061 1.024648 1.020246 1.045649 0.900528 0.847208 0.864185 0.000000 vaccine All ratio (total_dose/pop.) 3.404480
25 EE Estonia Diseases of the respiratory system (J00-J99) normalized 0.980036 1.007260 1.012704 1.194192 1.088929 0.932849 1.121597 1.136116 0.000000 vaccine All ratio (total_dose/pop.) 3.277817
61 LV Latvia Diseases of the respiratory system (J00-J99) normalized 0.898739 1.037395 1.063866 1.162185 0.984454 0.901261 0.983193 1.123109 0.000000 vaccine All ratio (total_dose/pop.) 3.267880
40 HR Croatia Diseases of the respiratory system (J00-J99) normalized 0.968126 0.890546 1.141328 0.857349 0.841833 0.807914 0.910031 0.961270 0.000000 vaccine All ratio (total_dose/pop.) 2.854150
88 SI Slovenia Diseases of the respiratory system (J00-J99) normalized 1.018009 0.986365 0.995626 0.835863 0.833548 0.622074 0.520196 0.540262 0.000000 vaccine All ratio (total_dose/pop.) 2.835063
91 SK Slovakia Diseases of the respiratory system (J00-J99) normalized 1.021516 0.890940 1.087544 1.026846 0.966147 1.181405 2.025563 1.594157 1.340111 vaccine All ratio (total_dose/pop.) 2.608904
79 RO Romania Diseases of the respiratory system (J00-J99) normalized 0.997274 0.968615 1.034111 1.138241 1.181262 1.426691 1.592194 1.340648 0.000000 vaccine All ratio (total_dose/pop.) 2.557969
7 BG Bulgaria Diseases of the respiratory system (J00-J99) normalized 0.929681 1.018976 1.051343 1.120897 0.965261 1.379141 1.567144 1.282730 0.000000 vaccine All ratio (total_dose/pop.) 1.370123
82 RS Serbia Diseases of the respiratory system (J00-J99) normalized 1.055686 0.925837 1.018478 0.996646 1.044865 1.274758 1.366260 1.248560 0.000000 nan nan nan nan
10 CH Switzerland Diseases of the respiratory system (J00-J99) normalized 1.036089 0.920944 1.042967 1.036311 1.022112 0.841739 0.808238 1.010353 0.000000 nan nan nan nan

notable CODs x Vaccines¶

lets put the CODs on an XY axis with the Vaccine values.

In [42]:
# codxv
temp = codxv[codxv.value < 14].copy()
temp = temp.dropna(subset=['value'])
# display(temp)


codlist = ['Malignant neoplasms (C00-C97)','Congenital malformations, deformations and chromosomal abnormalities (Q00-Q99)','Diseases of the respiratory system (J00-J99)']
for c in codlist:

    # kde 
    g = sns.jointplot(
        data=temp[temp['filter_x'] == c],
        x="value", 
        y=2022, 
        kind="kde",
        fill=True,
        cmap=heatmapCM
    )

    # Add scatter points on top
    g.ax_joint.scatter(
        temp[temp['filter_x'] == c]["value"], 
        temp[temp['filter_x'] == c][2022], 
        color="black", 
        alpha=0.7, 
        s=7
    )

    min_c = c
    if len(min_c) >= 50:
        min_c = min_c[0:25] + '...' + min_c[-10::]
    

    g.set_axis_labels( "Vaccines (ratio (total_dose/pop.))",min_c)

    g.figure.suptitle(f"Kde Plot : {min_c} x Vaccines", fontsize=14)

    # Add a title
    # plt.title("<-- hypothetical 0 vaccines", fontsize=10,x=0.34,y=0.25)

    # Add vertical and horizontal lines
    plt.axvline(x=0.0, color='black', linestyle='--', linewidth=1)  # Vertical line at x=20
    plt.axhline(y=1.0, color='black', linestyle='--', linewidth=1)  # Horizontal line at y=3

    # display(vdravg)
    plt.show()
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Post Axis Notes:¶

  • Compare the Charts...
    • Kde Plot : Death x Vaccines
      • Y: Average Normalized Deaths between 2022-2024
      • X: Vaccines (ratio (total_dose/pop.))
    • Kde Plot : Malignant neoplasms (C00-C97) x Vaccines
      • Y: Normalized Malignant neoplasms (aka Cancer) Deaths (in 2022)
      • X: Vaccines (ratio (total_dose/pop.))

here is the Scatter Chart of Malignant neoplasms (C00-C97) x Vaccine¶

compare it with

In [43]:
title = 'Scatter Chart - Malignant neoplasms (C00-C97) x Vaccine'
display(MD(f'### {title}'))


temp = codxv[codxv.filter_x == 'Malignant neoplasms (C00-C97)']

fig = px.scatter(
        temp,
        x="value",      
        y=2022,       
        color="name",      
        hover_name="name",
        title=title,
        labels={
            "value": "Vaccines (ratio total_dose/pop.)",  
            "Malignant neoplasms (C00-C97) 2022": 2022          
        },
        height=750
    )
fig.update_layout(template="plotly_dark")

fig.add_shape(
    type="line",
    x0=0, x1=dxv.value.max(),
    y0=1, y1=1, # Start and end y-coordinates
    line=dict(color="Red", width=2, dash="dash"),  # Line style
    xref="x", yref="y"          # Reference axes
)


fig.show()

Scatter Chart - Malignant neoplasms (C00-C97) x Vaccine¶

sidelinks¶

Excess Mortality And Vaccines In Europe (v2) #Table of Contents #Prerequisites ##Scientific Method ##Logical Fallacies ###About Appeal to Authority ####And More ... ###About Post Hoc Ergo Propter Hoc (Correlation vs Causation) #Observation ##News Articles & Headlines ###Ad Hominem Attacks ###Appeals to Authority ###Appeal to Emotions ##Denial of Aid #Hypothesis #Diving into the data. #Setup #Helping Functions #Import and Clean Data ##death data ###Getting the Data ###variables ##cause of death ###Getting the Data ###variables ##vaccine data ###Getting the Data ###variables #combine all data ##variables #Lets Visualize the Data ##Line Charts - normalized deaths ##HeatMaps of deaths by AgeGroups ###Post HeatMaps Notes ##Spearman and Kendall ##Other death x vaccine charts ##Bad-Batch Theory ###There seems to be to be an unusual grouping/cluster ###Bad-Batch Theory (by Dr Vibeke Manniche) ###my 2 cents #Lets look at some of the Causes of Death ##Hypothesizing Adverse Reactions from an mRNA Vaccine ###Spearman and Kendall ... (again) #Let's see the Spearman's Rank over time #lets see these overtime #notable CODs x Vaccines ##Post Axis Notes: ##here is the Scatter Chart of Malignant neoplasms (C00-C97) x Vaccine

Style¶